瘦身SpringBoot:优化项目打包大小的方法

瘦身SpringBoot:优化项目打包大小的方法

1、打jar包的痛点

现有的应用开发中,不论是单体架构、微服务架构,如果项目采用的是 springboot、springcloud 来作为底层框架,打包时最终都会以jar包的方式打包、部署。这是就会面临一个问题,就是 jar 包非常大,单体应用还好,但是如果是微服务就非常痛苦,几十个微服务就要拆分打包几十个 jar 包,每个 jar 包都很大(几百M),合起来就好几个 GB,非常占用空间。

2、瘦身思路

在以往的打包过程当中,会将自己编写的代码以及我们所使用到的依赖进行整合打到同一个jar包当中,而在实际的项目开发当中,只是对一个java文件进行修改,但是重新打包还是会打对应的依赖进去,整个包的体积也变大了,因此这里就想将依赖进行抽离出来单独打包,如下图所示

在这里插入图片描述

3、开始打包

首先我们先查看以往打包,这里我简单提供了一个微服务项目进行打包,可以看到也有个50兆左右的大小

在这里插入图片描述
在项目的pom当中添加以下配置:对启动类进行自定义配置,其余配置不需要大改。

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.6.1</version>
                <configuration>
                	<!--启动类配置-->
                    <mainClass>com.lq.LqAirTicketApplication</mainClass>
                    <!--解决windows命令行窗口中文乱码-->
                    <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
                    <layout>ZIP</layout>
                    <!--配置需要打包进项目的jar-->
                    <includes>
                        <!--这里是填写需要包含进去的jar,
                        	必须项目中的某些模块,会经常变动,那么就应该将其坐标写进来
                        	如果没有则non-exists ,表示不打包依赖
                        -->
                        <include>
                            <groupId>non-exists</groupId>
                            <artifactId>non-exists</artifactId>
                        </include>
                    </includes>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- 此插件用于将依赖包抽出-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.1.1</version>
                <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>
                            <!--是否去掉 jar 包版本信息-->
                            <stripVersion>false</stripVersion>
                            <!--包含范围-->
                            <includeScope>runtime</includeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

直接重新加载maven进行打包,打包之后查看打包效果,可以看到依赖都打包到这个lib文件夹当中,而我们自己所编写的代码所打成的jar包体积变小了很多,
在这里插入图片描述

4、如何启动项目

由于打包之后将依赖从jar包当中抽离出来了,所以这里不能直接用java -jar启动,而是需要指定对应的依赖进行启动项目

java -jar -Dloader.path="./lib" xxx.jar

在这里插入图片描述

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot的打包文件通常包含许多不必要的依赖项和资源,因此可以进行以减小打包文件的大小。以下是一些打包方法: 1. 排除不需要的依赖项:在pom.xml文件中,可以通过在依赖项上设置<exclusions>标签来排除不需要的依赖项。例如,假设不需要使用Spring Boot的默认日志系统,可以将以下内容添加到pom.xml文件中: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> ``` 2. 使用Spring Boot的插件:Spring Boot提供了许多插件来帮助打包。例如,可以使用spring-boot-maven-plugin插件来移除一些不需要的类和资源。在pom.xml文件中添加以下内容: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <layout>ZIP</layout> <includes> <include> <groupId>com.example</groupId> <artifactId>example</artifactId> </include> </includes> </configuration> </plugin> </plugins> </build> ``` 3. 删除不必要的文件:在打包之前,可以手动删除不必要的文件和目录,例如测试文件、文档和示例代码等。 通过以上方法,可以有效地打包Spring Boot应用程序,减小打包文件的大小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Modify_QmQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值