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插件即可
文檔