一、前言
在实际项目中,经常会遇到这样的问题。自己的业务代码就十几KB,结果项目打包后,整个jar包却达到了上百MB,受限于网络等限制,导致升级一次功能会非常耗时。这里我们就介绍下如何将自己的代码和三方依赖分开,如果不变动依赖,每次只升级自己的代码部分就可以。
二、实践
2.1 修改pom.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| <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包。
最后项目启动如下:
![]()
系统访问也正常
![]()