最近把以往的老项目用SpringBoot进行了重构,老项目中有部分本地依赖包不是放在maven库里的,是本地开发直接引入,需要在mvn package的时候把本地依赖jar也打进可执行包中。
这种通用问题,在网上找了一圈却没发现什么好的解决办法,表示很惊讶。特此把解决办法记录共享下。
1.网上较多的推荐方法:在pom文件定义依赖来一一对应本地依赖的相关jar包
<dependency>
<groupId>com.aliyun.alicom</groupId>
<artifactId>alicom-mns-receive-sdk</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/alicom-mns-receive-sdk-1.0.0.jar</systemPath>
</dependency>
<dependency>
<groupId>com.aliyun.mns</groupId>
<artifactId>aliyun-sdk-mns</artifactId>
<version>1.1.8</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/aliyun-sdk-mns-1.1.8.jar</systemPath>
</dependency>
</dependency>
参考文章:https://www.cnblogs.com/liukunjava/p/9577768.html
但是当本地jar包个数较多的时候,一个个的添加pom依赖,显得有点儿麻烦
2.添加maven插件(亲试可行)
在resource目录下新建一个目录来存放本地依赖jar包
然后在pom文件中添加
maven-compiler-plugin
插件,并设置本地依赖文件的路径
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<inherited>true</inherited>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>src/main/resources/lib/cdh</extdirs>
</compilerArguments>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources/lib/cdh</directory>
<targetPath>BOOT-INF/lib/</targetPath>
</resource>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.jar</exclude>
</excludes>
<targetPath>BOOT-INF/classes/</targetPath>
</resource>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.jar</exclude>
</excludes>
<targetPath>./</targetPath>
</resource>
</resources>
</build>
这样当执行mvn package时就会引入设定目录下的所有本地依赖包,通过idea直接跑或者rebuild都是没问题的。