Java - Maven项目打包成jar给第三方使用(带依赖打包)

时间:2022-02-03 18:32:12

由于我们写项目的时候,有的时候并不是一个独立项目,而是作为一个第三方类库来提供服务的存在,用来给别的项目引入作为某个功能的封装。

打包成jar

解决方案主要是从pom.xml来入手,因为是maven项目,所以在pom里面加入build的参数,然后就可以了。

   <build>
<plugins>
<!-- any other plugins -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>

把这一段放到pom里面,</project>前面就可以。

然后再运行:

mvn assembly:assembly

就可以在target里面看到一个jar-with-dependencies的jar包了。

引入这个jar

那这个jar包如何放到现在已经有的maven项目里呢?

安装到本地仓库

通过下面这个命令,来把这个jar包安装到本地的仓库里,然后在pom里面直接引入就好了

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>

参考文档:http://maven.apache.org/general.html#importing-jars

直接指定jar包的位置

直接把jar包放到一个自己觉得合适的路径下,一般放到自己的工程项目下,然后直接在pom中指定jar包的位置:

<dependency>
<groupId>com.loopj.android.http</groupId>
<artifactId>android-async-http</artifactId>
<version>1.3.2</version>
<type>jar</type>
<scope>system</scope>
<systemPath>${project.basedir}/libs/android-async-http-1.3.2.jar</systemPath>
</dependency>

这里的systemPath就是jar包的位置,可以使用绝对路径。