当前位置: 首页 > 工具软件 > fat32-lib > 使用案例 >

spring-boot jar包瘦身(fat-jar到thin-jar)

堵毅然
2023-12-01

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包目录

参考链接:springBoot 打包 fat、thin jar

 类似资料: