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插件即可
文档
本文介绍如何优化SpringBoot项目打包,减少包大小。通过将lib目录外置,使用PropertiesLauncher启动,适用于1.5.x版本。对于2.x版本,采用spring-boot-thin-launcher插件,实现依赖解析与动态加载。
3270

被折叠的 条评论
为什么被折叠?



