人工更新SpringBoot项目,Jar包太大问题解决
程序员文章站
2022-05-04 14:13:28
...
楼主也是刚接触SpringBoot几天,以前都是用SpringMVC开发,这里跟小伙伴们分享一个需求问题,如果有遇到的话可以继续往下看,能帮助到各位,是最好不过啦。
我们知道用SpringBoot开发后,通过maven打包之后会生成一个xxx.jar包,那这个jar包往往很大,因为里面内嵌着你的其他很多依赖。如果你遇到了你的网络不是很好,或者说服务器远在外网,那么你更新项目上传将是一个非常痛苦的事情。当然你要是会Jenkins这种东西,这种问题会得到很好的解决,因为楼主自己刚转boot,以下是我能目前做到的一种做法,大家可以尝试一下。
基本原理
基于曾经SpringMVC项目部署的经历,可以得出,其实我们最频繁操作的往往是自己写的那些业务代码,或者一些自定义类的编写,组合起来也不过300-400k。所以我们要做的就是把不经常更新的比如一些依赖等jar包统统放置外部,启动时加载即可。
第一步
在pom.xml中加入以下配置
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layout>ZIP</layout>
<!--你要保留的依赖 改这里基本就可以了-->
<includes>
<include>
<groupId>com.gaby.xx</groupId>
<artifactId>aa-bb</artifactId>
</include>
</includes>
</configuration>
</plugin>
<plugin>
<!--拷贝第三方依赖文件到指定目录-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<excludeTransitive>false</excludeTransitive>
<stripVersion>false</stripVersion>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
<!--跳过测试-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
第二步
用-Dloader.path 来加载lib文件夹下的依赖
java -jar -Dloader.path=lib xxx.jar
由此,下次再次打包出来的jar,只有几百k了,其余依赖都在lib中。