Spring Boot 1.5.x 打包
demo项目地址
/youngboyvip/package-example
解决问题
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(pile) 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插件即可
文档