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

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>
	
	<lib.path>D:\liblib.path>
properties>

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
                <configuration>
                    <layout>ZIPlayout>
                    <includes>
                        <include>
                            <groupId>nothinggroupId>
                            <artifactId>nothingartifactId>
                        include>
                    includes>
                configuration>
            plugin>

            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-dependency-pluginartifactId>
                <executions>
                    <execution>
                        <id>copy-dependenciesid>
                        <phase>prepare-packagephase>
                        <goals>
                            <goal>copy-dependenciesgoal>
                        goals>
                        <configuration>
                            
                            <outputDirectory>${lib.path}/${artifactId}outputDirectory>
                            <overWriteReleases>falseoverWriteReleases>
                            <overWriteSnapshots>falseoverWriteSnapshots>
                            <overWriteIfNewer>trueoverWriteIfNewer>
                        configuration>
                    execution>
                executions>
            plugin>
        plugins>
    build>

2.上传依赖jar包到云服务器指定目录
首次需要全部上传,后面有需要只需要增量上传即可

3.修改启动脚本
jvm启动命令中增加 -Dloader.path=xxx 来指定应用依赖jar包目录

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

你可能感兴趣的:(java,开发笔记,运维,spring,jar,java,后端,运维开发)