一般来说,我们会把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包直接运行就可以了。