fat-jar:所有的依赖都打到一个jar里面,导致jar包非常大(一个jar包上百兆),不利用网络传输(特别是云服务器来说带宽资源比较贵);
thin-jar:依赖jar可以分离出来,从而保证我们打包出来的应用jar包很小(可能只有几兆甚至更小),而依赖jar在大部分情况下是不会改变的,所以每次发布的时候只需要把应用jar包上传即可。
目前我司采用内网自建GitLab平台托管代码,fat-jar方式打包,每个应用jar包达到百兆。为了规避云服务带宽不足导致上次jar包缓慢的问题,我们在云服务器上安装了GitLab Runner(GitLab私服及CI环境搭建),从而实现线上打包并内网分发,从而节约发版时间。但是这就需要NAT实现内网穿透(云服务器能够访问到内网GitLab上的代码库)。
1.更改maven打包方式
pom.xml
<properties>
<!-- 指定依赖jar包存放目录 -->
<lib.path>D:\lib</lib.path>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layout>ZIP</layout>
<includes>
<include>
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!--复制到哪个路径-->
<outputDirectory>${lib.path}/${artifactId}</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
2.上传依赖jar包到云服务器指定目录
首次需要全部上传,后面有需要只需要增量上传即可
3.修改启动脚本
jvm启动命令中增加 -Dloader.path=xxx 来指定应用依赖jar包目录