這篇文章主要介紹“怎么使用springboot打包插件去除jar包瘦身”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“怎么使用springboot打包插件去除jar包瘦身”文章能幫助大家解決問題。
成都創新互聯-專業網站定制、快速模板網站建設、高性價比北屯網站開發、企業建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式北屯網站制作公司更省心,省錢,快速模板網站建設找我們,業務覆蓋北屯地區。費用合理售后完善,十年實體公司更值得信賴。
便于后續tomcat啟動指定依賴包路徑
org.apache.maven.plugins maven-dependency-plugin copy package copy-dependencies ${project.build.directory}/lib
使用這個插件構建完之后的目錄結構多了一個lib目錄(即上述配置的outputDirectory指定的路徑),里面是依賴的jar包:
org.springframework.boot spring-boot-maven-plugin true ZIP com.iasp.BasicStarter ${groupId} ${artifactId} repackage
配置上述打包之后就會排除相應的jar包,使得由插件打成的Flat jar包大小變小,便于上傳服務器發布,效果如下,BOOT-INF目錄下的lib目錄沒有了:
原先打成的jar包里的結構為
然后在啟動項目時指定jar包路徑-Dloader.path="../lib",這樣就可以達到瘦身效果了,其中依賴放在D:develop/shared/fjar目錄下,執行運行命令
java -Dloader.path="D:develop/shared/fjar" -jar mytest.jar
附注:另外一種啟動方案是可以不加-Dloader.path="D:develop/shared/fjar"來指定路徑,直接使用如下指令啟動
java -jar mytest.jar
使用上述啟動的話需要添加maven-jar-plugin插件,配置
org.apache.maven.plugins maven-jar-plugin true lib/ com.common.util.CommonUtilsApplication
上述插件效果就是在打成的包里META_INF目錄下的MANIFEST.MF文件里增加Class-path對應jar,這樣在后面應用剛啟動時就會根據Class-Path的只去加載需要的版本依賴(解決在共享目錄里存在多版本加載引用沖突問題),這個效果就等效加參數-classpath xxx(具體的jar)。
此時就是將需要的jar目錄lib放在和要運行的xxx.jar同級目錄即可,啟動時就可以不加-Dloader.path參數了,如果lib目錄和要運行的xxx.jar不在同級目錄的話,則需要使用-Dloader.path來啟動
如下:在同一級目錄啟動
不在同一級目錄啟動:
其中-Dloader.path可以指定多個目錄,這樣在存在多個微服務情況下可將一些公共用到的jar放在一個共享目錄中,每個微服務獨有的jar可以放在微服務私有的目錄下(解決jar版本沖突問題),示例如下:
注意:
對于多個微服務瘦身打包建議使用maven-jar-plugin打包,避免因為spring-boot-maven-plugin打包機制導致的一些應用啟動問題(已踩坑)
比如項目A依賴Y庫的1.0版本,項目B依賴Y庫的2.0版本,那么可能會出現版本依賴沖突(兩個版本不兼容的情況下),解決方案:
2.1、能做到版本一致就保持使用同一個版本,保證版本一致。可以使用maven的版本依賴管理進行處理,即在父pom文件使用
2.2、讓項目各自依賴所需的版本并打進war包中,把其他同版本的jar包放在同一個共享包下
測試發現依賴在查找時從上往下找,匹配到就用第一個,如下圖會使用comm-0.0.1.jar版本的
附注:
使用spring-boot-maven-plugin插件,會將依賴的jar包全部打包進去,這樣就可以直接運行生成的 JAR 包,簡化了我們開發操作。
使用spring-boot-maven-plugin插件如果不指定程序主運行入口類的話默認為Main-Class: org.springframework.boot.loader.JarLauncher
org.springframework.boot spring-boot-starter-parent 2.1.9.RELEASE ccom.notes.JavaNotesApplication
org.springframework.boot spring-boot-maven-plugin 2.1.9.RELEASE com.notes.JavaNotesApplication ZIP repackage
org.springframework.boot spring-boot-maven-plugin org.apache.maven.plugins maven-jar-plugin true false lib/ com.notes.JavaNotesApplication ${project.version}
關于“怎么使用springboot打包插件去除jar包瘦身”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注創新互聯行業資訊頻道,小編每天都會為大家更新不同的知識點。