Maven项目打包时,如果遇到需要添加本地jar包依赖的时候,可以选择两种方法:
1. 安装到本地仓库
第一种方法比较常规,适用于需要添加的jar包也是由maven项目导出,含有pom文件的时候。只需要将jar包安装到本地maven仓库下,然后添加依赖即可。
(1)安装到本地仓库,执行以下命令(其中的-Dfile/-DgroupId/-DartifactId/-Dversion项根据pom文件内容填写):
mvn install:install-file -Dfile=xxxxx.jar -DgroupId=xxx.xxx.xxx -DartifactId=xxxxx -Dversion=1.0.0 -Dpackaging=jar
(2)安装之后可以在本地仓库中找到对应的jar包。然后将对应的依赖信息插入到工程的pom文件即可:
<dependency><groupId>xxx.xxx.xxxgroupId><artifactId>xxxxxartifactId><version>1.0.0version>dependency>
2. dependency中指定scope="system"和本地jar包路径
这种方法适用于其他方式导出的jar包,jar包中不含有pom信息,从而无法安装进本地仓库的情况。做法是:先配置本地jar包依赖,然后在build时将设置将jar包导出,同时配置manifest。
(1)配置本地jar包依赖(systemPath指向本地jar包路径):
<dependency><groupId>com.amazonawsgroupId><artifactId>aws-java-sdk-s3artifactId><version>1.11.0version><scope>systemscope><systemPath>${project.basedir}/lib/xxx.jarsystemPath>dependency>
(2)在
<plugin><groupId>org.springframework.bootgroupId><artifactId>spring-boot-maven-pluginartifactId><configuration><includeSystemScope>trueincludeSystemScope>configuration>plugin>
(3)如果项目使用maven-jar-plugin插件打包的话,还需要在manifectEntries中添加对应的jar包信息;否则虽然jar包导出了,但是项目生成的MANIFEST.MF文件中没有对应的依赖信息,也会导致运行时找不到对应的class。
<plugin><groupId>org.apache.maven.pluginsgroupId><artifactId>maven-jar-pluginartifactId><configuration><archive><manifest><addClasspath>trueaddClasspath><classpathPrefix>lib/classpathPrefix><mainClass>XXXXmainClass>manifest><manifestEntries><Class-Path>./ lib/xxxxx.jarClass-Path>manifestEntries>archive><outputDirectory>${project.build.directory}/XXXXXoutputDirectory>configuration>plugin>
(4)最后附上一个项目完整的
<build><finalName>XXXXXfinalName><sourceDirectory>src/main/javasourceDirectory><resources><resource><directory>src/main/resourcesdirectory><targetPath>${project.build.directory}/XXXXXtargetPath><excludes><exclude>**/*.javaexclude>excludes>resource>resources><testSourceDirectory>src/test/javatestSourceDirectory><testResources><testResource><directory>src/test/resourcesdirectory><filtering>truefiltering><excludes><exclude>**/*.javaexclude>excludes>testResource>testResources><plugins><plugin><groupId>org.springframework.bootgroupId><artifactId>spring-boot-maven-pluginartifactId><configuration><includeSystemScope>trueincludeSystemScope>configuration>plugin><plugin><groupId>org.apache.maven.pluginsgroupId><artifactId>maven-surefire-pluginartifactId><configuration><skipTests>trueskipTests>configuration>plugin><plugin><groupId>org.apache.maven.pluginsgroupId><artifactId>maven-dependency-pluginartifactId><executions><execution><id>copy-dependenciesid><phase>packagephase><goals><goal>copy-dependenciesgoal>goals><configuration><outputDirectory>${project.build.directory}XXXXX/liboutputDirectory>configuration>execution>executions>plugin><plugin><groupId>org.apache.maven.pluginsgroupId><artifactId>maven-jar-pluginartifactId><configuration><archive><manifest><addClasspath>trueaddClasspath><classpathPrefix>lib/classpathPrefix><mainClass>xxx.xxx.XXXXXmainClass>manifest><manifestEntries><Class-Path>./ lib/xxxxx.jarClass-Path>manifestEntries>archive><outputDirectory>${project.build.directory}/XXXXXoutputDirectory>configuration>plugin>plugins>build>
Copyright © 2004-2024 Ynicp.com 版权所有 法律顾问:建纬(昆明)律师事务所 昆明市网翼通科技有限公司 滇ICP备08002592号-4