背景
最近Jenkins打包springboot项目的jar包都80M以上,在部署时候,就算压缩以后也很大,经过资料查找,最终采用瘦包部署
项目改造
- 修改pom.xml文件
在
build
-plugins
-plugin
下的spring-boot-maven-plugin
添加一个依赖
xml<!--pom.xml--> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <dependencies> <dependency> <groupId>org.springframework.boot.experimental</groupId> <artifactId>spring-boot-thin-layout</artifactId> <version>1.0.28.RELEASE</version> </dependency> </dependencies> </plugin> </plugins> </build>
- 执行打包命令
mvn clean package
发现jar包只有一百多KB 打包后的jar包只包含了我们自己编写的代码,依赖都不在jar包里,那么我们如何去运行它,让他去找到依赖呢。
运行jar包
我们有2种方式在服务器上运行jar包
直接运行
- 会把依赖下载到
~/.m2/repository
目录
java -jar my-app.jar
- 我们可以指定依赖下载到当前目录
java -Dthin.root=. -jar my-app.jar
- 我们可以在程序启动之前手动预热
java -Dthin.dryrun=true -Dthin.root=. -jar my-app.jar
手动上传依赖
我们使用插件在本地把依赖构建好
xml<!--pom.xml--> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <dependencies> <dependency> <groupId>org.springframework.boot.experimental</groupId> <artifactId>spring-boot-thin-layout</artifactId> <version>1.0.28.RELEASE</version> </dependency> </dependencies> </plugin> <plugin> <groupId>org.springframework.boot.experimental</groupId> <artifactId>spring-boot-thin-maven-plugin</artifactId> <version>1.0.28.RELEASE</version> <executions> <execution> <id>resolve</id> <goals> <goal>resolve</goal> </goals> <inherited>false</inherited> </execution> </executions> </plugin> </plugins> </build>
-
把
target/thin/root/repository
目录上传到服务器 -
运行命令
java -Dthin.root=. -jar my-app.jar
即可