maven 打包第三方依赖包

首先,简单介绍Maven。Maven是管理Java项目开发的工具,不是IDE,不是编译工具。它只是提供了一套规则和插件,说明如何对Java项目进行开发和管理。

它的规则通过POM文件说明。对于POM文件,这里不详细介绍,只做大致介绍。我认为,POM文件大致有两个作用,静态描述和动态描述。第一个作用,静态描述,即对POM文件所在的文件夹的(子)项目的介绍,比如该(子)项目的唯一标识(坐标),该子项目的依赖,该子项目的打包方式等;第二个作用,动态描述,即如何对该(子)项目进行编译、测试、打包等,用生命周期表示。Maven提供三个生命周期以及各个生命周期阶段所需的插件,可以不改直接用,也可以根据自己的需要修改。编译、测试、打包等不是Maven实现,而是它的仓库中提供的插件。仓库是用来存放插件和依赖的地方。仓库有本地、远程仓库。远程仓库又分为:2中央仓库、 私服 和其它公共库。这里不做详细介绍。

这里的任务是如何将第三包依赖包加入到最终的jar可执行文件中。

对于第三方依赖(external dependency) ,有四种方式可以使用。第一种方式,在本地仓库中添加该依赖;第二种方式:将该仓库deploy,放在远程仓库,最好大家都能访问;第三种方式:将该依赖的scope描述为system并说明绝对路径;第四种方式:将该依赖放在程序的自建仓库(static project repository),并在打包的时候将其将入到最终的jar。

本文主要是说明第四种方法,也比较推荐第四种方法。因为前三种方法,要么不利于最终jar文件的分发,要么比较麻烦。第四种方法,在运行的时候不需要修改或者添加java lib path。

很多时候,当某个项目需要的依赖是第三方提供的,我这类遇到的是Jcuda。由于当时在远程仓库还没有Jcuda 7.5 的依赖,就需要将其作为第三方依赖来处理。在编译的时候使用的是第三种方法,但是因为需要再另一台机器上运行,就出现问题了。网上找了很久,有两个说的很好。

这两个链接说明了,如何将该依赖包放在程序的lib中,该文件夹如何组织才不会出错,路径如何。

至于如何将该依赖的jar文件打包到最终的文件中。

第一步: 将依赖文件放到程序的repository中;

第二步:在pom.xml中指明依赖;

<dependency> <groupId>jcuda</groupId> <artifactId>jcuda</artifactId> <version>0.7.5</version> </dependency>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzjpwj.html