给Spring Boot的Jar包瘦身

给Spring Boot的Jar包瘦身

一般来说,我们会把Spring Boot打包成jar来部署,如果是直接打包成Jar的话,它会随着所添加的依赖而越来越庞大,当然,也可以打成war包,放在tomcat里来运行。

因为部分的各种流程慢慢规范起来,新的Spring Boot项目都是通过Docker来部署,但是还有一些项目依然是手动编译为Jar(因为闲麻烦就没有部署Jenkins,其实有Jenkins肯定是更加的方便),随着各种依赖库的增加,最终使得它有些庞大,现在打包出来就有**97M+**,

其实,这在万兆内网显得微不足道,不过,部分比较老的服务器就显得力不从心,上传一次得花好几十秒,所以,我们希望Jar包更小一些。这里我们可以借助maven插件来给Jar瘦身。

默认情况下的pom.xml中的build节点是这样的

1
2
3
4
5
6
7
8
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

现在我们需要改用其他插件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<build>
<plugins>

<!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>启动类(如com.unionpay.DemoApplication)</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<!-- 拷贝依赖的jar包到lib目录 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

现在来看看我们的target目录的文件大小

可以看到,我们的jar只有几百KB,这时候,我们需要把lib文件夹和jar复制到同一目录即可运行,以后,我们在不更改依赖包的情况,每次只需要拷贝项目的Jar包直接运行就可以了。

作者

eyiadmin

发布于

2021-08-18

更新于

2024-05-31

许可协议

评论