Maven打包实践:实现代码与三方依赖分离
一、前言
在实际项目中,经常会遇到这样的问题。自己的业务代码就十几KB,结果项目打包后,整个jar包却达到了上百MB,受限于网络等限制,导致升级一次功能会非常耗时。这里我们就介绍下如何将自己的代码和三方依赖分开,如果不变动依赖,每次只升级自己的代码部分就可以。
二、实践
2.1 修改pom.xml
<plugins>
<!-- 让 JAR 知道主类是哪个 -->
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.wno704.WnoQuartzAdminApplication</mainClass>
</manifest>
</archive>
<outputDirectory>${project.build.directory}/output</outputDirectory>
</configuration>
</plugin>
<!--配置了maven坐标,会把依赖放入project.build.directory的output/lib下-->
<!-- 拷贝依赖到 lib 目录 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.2</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/output/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
注意:mainClass需要指定项目的主类,springboot项目就是SpringBootApplication所在的类。
2.2 项目启动
由于根据以上的pom文件,打包会将自己的代码成一个干净的 xxx.jar(仅包含 .class、资源等,不含依赖);三方依赖打包输出到 lib/ 子目录中,便于管理、替换、升级。这样我们每次升级只需要替换自己的xxx.jar就可以了。

这个时候,我们的启动脚本要修改如下:
java -cp "wnoQuartzAdmin.jar;lib/*" com.wno704.WnoQuartzAdminApplication
注意:其中wnoQuartzAdmin.jar为自己代码生成的jar包。
最后项目启动如下:

系统访问也正常

浙公网安备 33010602011771号