需求:maven项目需要引入本地一个jar包。并且打包后需要把该文件引入依赖。打包使用了maven-assembly插件,更加细粒度的打包控制
比如项目目录下有lib/my-dep.jar
- 将jar包引入pom.xml
<dependency>
<groupId>my-dep</groupId>
<artifactId>my-dep</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/lib/my-dep.jar</systemPath>
</dependency>
scope 为system。此时必须提供systemPath即本地依赖路径。表示maven不会去中央仓库查找依赖。要注意的是这个范围是不推荐使用的,whatever, who care?
- 将jar包加入classpth,同样在pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>com.albert.Application</mainClass>
<classpathPrefix>lib/</classpathPrefix>
<addClasspath>true</addClasspath>
</manifest>
<manifestEntries>
<!-- 在Class-Path下添加配置文件的路径 -->
<Class-Path>lib/my-dep-1.0.jar</Class-Path>
<!--这里表示jar路径加入到MANIFEST.MF-->
</manifestEntries>
</archive>
</configuration>
</plugin>
- 打包时把my-dep.jar一并打包到lib。在assembly的xml文件中,表示把pom范围是system的依赖也打包到lib目录
<dependencySet>
<outputDirectory>/lib</outputDirectory>
<unpack>false</unpack>
<scope>system</scope>
</dependencySet>