SpringBoot 打包瘦身(spring-boot-thin-launcher)

推薦@ifu25 的終極瘦身方法: https://weiku.co/article/135/java

以前寫過一個瘦身的土辦法 https://my.oschina.net/formatkm/blog/1822900git

@ifu25 在回覆中提到 spring-boot-thin-launchergithub

如今用spring-boot-thin-launcher 打包插件的高大上形式。這個方法更加自動化,還能夠自動生成pom,在第一運行的時候會自動下載依賴。web

不少時候是在內網環境進行部署,不能鏈接外網下載依賴,這裏主要記錄手動分離出jar依賴的過程。spring

導出依賴

導出依賴的jar到一個目錄的Gradle腳本,運行copyToLib任務,依賴jar會導出到lib緩存

task copyToLib(type: Copy) {
    into "$buildDir/libs/lib"
    from configurations.runtime
}

使用thin-launcher的插件

buildscript {
	ext {
		springBootVersion = '2.0.1.RELEASE'
		wrapperVersion = '1.0.21.RELEASE'
	}
	repositories {
		mavenLocal()
		mavenCentral()
	}
	dependencies {
		classpath("org.springframework.boot.experimental:spring-boot-thin-gradle-plugin:${wrapperVersion}")
		classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
	}
}

apply plugin: 'io.spring.dependency-management'
apply plugin: 'org.springframework.boot'
apply plugin: 'org.springframework.boot.experimental.thin-launcher'

就會有一個 thinJar的Gradle任務,運行就能夠生成不帶依賴的jar包app

運行程序

  • 手動外置jar的運行
java -Djava.ext.dirs=./lib/ -jar web.jar

-Djava.ext.dirs 是指定jar運行時候搜索依賴庫的路徑maven

  • 自動下載依賴的運行
java -Dthin.root=.  -jar  web.jar

-Dthin.root 是配置jar下載的緩存目錄spring-boot

搜索jar的目錄頁能夠配置到MANIFEST.MF文件裏面gradle

主要問題

生成後須要仔細調試copy出來的依賴jar包,會有些衝突或者缺失,特別是log日誌組件,還有隱含依賴包的版本。

例如: 使用undertow容器,須要手動添加依賴引用xnio-nio

'org.jboss.xnio:xnio-nio:3.5.6.Final',

項目地址:https://github.com/dsyer/spring-boot-thin-launcher

相關文章
相關標籤/搜索