Spring Boot gradle 打包瘦身 含demo!
2019-03-25 本文已影响0人
洋洋洒洒_6a20
Spring Boot 1.5.x 打包
解决问题
Spring Boot 项目包太大上传服务器费时
优化原理
把占空间的 lib
目录移到外面去,打包时指定loader
为PropertiesLauncher
,启动时使用loader.path
制定 lib
目录的位置
参考文档
bootReapckage 文档67.3 Packaging executable jar and war files
章节 点我
Spring Boot Loader 原理 E.1 Nested JARs 章节
点我
gradle task写法
Spring 1.5.x版本适用 2.x版本不适用
configurations {
mycustomconfiguration //单独配置configuration
}
dependencies {
//给mycustomconfiguration 配置依赖,如果你不配那lib/中就不会有jar包
mycustomconfiguration "org.liquibase:liquibase-core"
}
//复制依赖jar包的任务,会在build/libs 目录下面生成lib.zip文件
task copyJars(type: Zip) {
from(configurations.compile)
destinationDir file("build/libs")
archiveName "lib.zip"
}
task clientJar(type: Jar) {
appendix = 'slim'
from sourceSets.main.output
exclude('.*/lib/**')
manifest {
attributes 'Main-Class':'org.springframework.boot.loader.PropertiesLauncher'
}
}
task bootJar(type: BootRepackage, dependsOn: clientJar) {
springBoot.layout = 'zip'
withJarTask = clientJar
customConfiguration = "mycustomconfiguration"
}
打包命令 执行bootJar 就ok了
启动方法
STEP1: 解压lib.zip 文件到lib文件夹
STEP2: 执行命令
java -Dloader.path="lib/,WEB-INF/classes" -jar 你jar包的名字
Spring Boot 2.x 打包
使用spring-boot-thin-launcher
插件打包SpringBoot项目
github地址传送门
优化原理
使用 ThinJarWrapper
装载器从jar包 pom.xml/META-INF/maven
或META-INF/thin.properties
路径中解析出依赖的jar包,
然后从本地仓库或远程仓库拉取jar包,然后使用ThinJarLauncher
运行 Main
函数
使用说明
运行 thinJar
任务打包
运行 java -jar jar包名
启动
注意事项
别忘了配置 apply plugin: 'maven-publish'
插件,不然不会生成pom文件
文档参考
maven 项目参考
使用maven插件即可
文档