一个小技巧,Maven 打 Jar 包体积缩小100倍

本文介绍了如何通过Maven配置将业务代码与三方依赖分离,从而大大减小Jar包体积,提高构建和部署效率。通过在pom.xml中添加特定配置,可以将依赖打包到单独的lib目录,仅上传改动的业务代码,降低资源消耗。此外,结合Jenkins自动化工具,可以进一步优化依赖管理,通过SSH和Docker方式自动化构建和部署流程,降低管理成本。
摘要由CSDN通过智能技术生成

为了大家能够从从项目集成的苦力活中解放出来,最近这一周,整理了两篇关于Jenkins构建、部署的文章

这期间,和粉丝大佬交流到关于Maven构建的优化、压缩的问题;一段简单的配置,就可以将包Jar包的大小缩小近百倍,实际的开发部署过程中,非常的实用的一个小技巧,在这里分享给各位;

SpringBoot项目的依赖,我们一般都会采用Maven管理,整个项目,一般都分为以下几部分:

  • 三方依赖通过pom.xml文件配置,添加到项目中来特点:变化小,占用空间大
  • 业务代码特点:变化大,占用空间小
  • 静态资源特点:变化适中,占用空间大;不过一般的静态资源都另外管理,很少会直接放在项目里面;

而整个项目通常会被构建成一个Jar,上传到服务器运行;整个Jar包中,三方依赖会被一并打包进去,占用空间最大的,也就是这部分依赖包;

比如下面这个最基本的测试 SpringBoot 项目,就一个简单的hello world接口,但是打包出来的jar就有20多M;

 

把Jar包解压之后,发现三方依赖竟然比整个Jar包都大(可能压缩的原因),自己的代码只有100多K;

这还只是一个最基础的项目,如果业务复杂,依赖多,光是三方包可能就占用几十、几百M之多;

由于依赖包变化小,占用空间大的特点,大部分情况是第一次添加之后,后面很少会去调整;但每次修改哪怕是一行代码,都需要重新把他们构建Jar中去,往服务器上传、发布,白白消耗了大量的资源、带宽以及时间;

那能否将三方依赖和自己的业务代码分开打包呢?答案是:可以的

1依赖拆分配置

只需要在项目pom.xml文件中添加下面的配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <fork>true</fork>
                <finalName>${project.build.finalName}</finalName>
                <!--解决windows命令行窗口中文乱码-->
                <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
                <layout>ZIP</layout>
                <includes>
                    <!--这里是填写需要包含进去的jar,
                        必须项目中的某些模块,会经常变动,那么就应该将其坐标写进来
                        如果没有则non-exists ,表示不打包依赖
                    -->
                    <include>
                        <groupId>non-exists</groupId>
                        <artifactId>non-exists</artifactId>
                    </include>
                </includes>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <!--此插件用于将依赖包抽出-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
             
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值