maven打jar包,将依赖的jar提取出来
使用java写了一个自动化测试的功能,pom只引用了selenium和poi的包,但是把工程源码和工程放到了另外一台电脑,对应的poi,selenium的包也复制过去了,还是运行不起来,提示缺少各种jar。一个一个“排雷”找到的缺失的jar比较耗时,通过修改pom.xml中的配置,将依赖的jar,输出到一个固定目录,然后另外一台电脑修改配置,程序完美的运行起来了。
1、将相关lib提取到一个相关的目录,并将源码打包过来
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.3.0</version><configuration><archive><manifest><mainClass>${main.class}</mainClass><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix></manifest></archive></configuration>
</plugin>
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><version>3.6.0</version><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>${project.build.directory}/lib</outputDirectory><overWriteReleases>false</overWriteReleases><overWriteSnapshots>false</overWriteSnapshots><overWriteIfNewer>true</overWriteIfNewer></configuration></execution></executions>
</plugin>
<!-- 使用maven-dependency-plugin复制依赖 -->
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><version>3.6.0</version><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>${project.build.directory}/lib</outputDirectory><overWriteReleases>false</overWriteReleases><overWriteSnapshots>false</overWriteSnapshots><overWriteIfNewer>true</overWriteIfNewer></configuration></execution></executions>
</plugin><!-- 配置主jar包 -->
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.3.0</version><configuration><archive><manifest><mainClass>${main.class}</mainClass><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix></manifest></archive></configuration>
</plugin><!-- 直接将源码作为资源包含到jar包中 --> <resources><resource><directory>src/main/java</directory><includes><include>**/*.java</include></includes><targetPath>META-INF/sources</targetPath></resource><resource><directory>src/main/resources</directory><includes><include>**/*</include></includes></resource> </resources>
使用以上配置,生成的jar包,及依赖包图示

2、使用如下配置,将lib整个打入jar
<!-- 使用spring-boot-maven-plugin创建可执行jar 符合要求 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.7.0</version><configuration><mainClass>${main.class}</mainClass><layout>JAR</layout></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin>