我有一個在生產環境中運行良好的彈簧引導應用程序,但最近我有一些關於脂肪罐部署策略的問題。脂肪罐的總大小約爲80 MB,因爲它全部捆綁爲單個jar,每次我改變一行,這個80 MB的軟件包就會重新部署。我如何將這個胖罐子分割到/ lib目錄下的主jar和其他罐子中(這些jar不是我開發的)。我有什麼選擇?部署彈簧引導脂肪罐
0
A
回答
1
你有幾個選擇,最簡單的方法(and suggested by official docs)就是提取fat jar文件。
$ unzip -q myapp.jar
$ java org.springframework.boot.loader.JarLauncher
有幾個與這個問題,首先是所有的應用程序代碼現在是一堆類文件(而不是在它自己的jar)。
第二個問題是您仍在使用彈簧引導加載程序,該加載程序不再提供多少實用程序,並且還會污染文件系統。
另一種選擇是改變你的構建,爲你提供你想要的。
隨着gradle你可以使用application plugin,與maven,我會建議appassembler plugin。
Appassembler生成目錄target/appassembler/
,其中包含帶有啓動腳本的bin目錄以及包含所有依賴關係的repo目錄。
要使用它,你需要禁用spring-boot:repackage任務,並告訴appassembler插件你的主類是什麼。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<skip>true</skip>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.10</version>
<configuration>
<programs>
<program>
<mainClass>com.example.MyMainClass</mainClass>
<id>myappname</id>
</program>
</programs>
</configuration>
</plugin>
</plugins>
</build>
+0
我會檢查第二個選項,謝謝。 – cacert
相關問題
- 1. 如何以最小的內存運行彈簧引導脂肪罐?
- 2. 運行特定的彈簧批處理作業包含彈簧引導脂肪罐
- 3. Vertx Webroot在脂肪罐
- 4. 如何用gradle建立脂肪罐1.6
- 5. 如何爲EE CDI建立脂肪罐?
- 6. maven創建與外部庫的脂肪罐
- 7. 如果將靜態內容部署爲罐子彈簧引導404錯誤
- 8. 在一個項目中部署彈簧引導和彈簧安全
- 9. 重新部署彈簧引導服務而不重新啓動?
- 10. 將彈簧引導部署到elasticbeanstalk並設置系統屬性
- 11. 「沒有主要清單屬性」當試圖執行脂肪罐
- 12. 彈簧聚合罐
- 13. 與彈簧引導
- 14. Kotlin JSR-223脂肪罐內的ScriptEngineFactory - 無法找到Kotlin編譯器罐
- 15. 從罐子導入彈簧豆
- 16. perl的脂肪逗號
- 17. 重構脂肪減少者
- 18. 什麼是脂肪JAR?
- 19. UIToolbar與異常脂肪UISegmentedControl
- 20. 使用彈簧引導管理的非彈簧引導工程
- 21. 彈簧引導啓動與彈簧引導起動XXX
- 22. 在不同的環境下建立彈簧引導罐
- 23. 運行彈簧引導罐時找不到或加載主類
- 24. 可執行的彈簧引導罐沒有解析視圖
- 25. 如何從彈簧引導罐中排除資源文件?
- 26. 無法從彈簧引導罐中讀取文本文件
- 27. 如何運行外部類路徑文件夾彈簧引導罐子
- 28. 如何從詹金斯部署彈簧引導應用程序罐到EC2機器
- 29. 彈簧罐依賴關係
- 30. 彈簧引導戰爭log4j2
你在用什麼構建工具,Maven,Gradle? – Magnus
我正在使用maven。 – cacert
這是一個問題,因爲?在刪除包裝時,您基本上也會刪除所有依賴關係。現在,在升級某些東西時,您還必須確保將其複製到'/ lib'文件夾中。最終,由於/ lib文件夾中的舊/缺失依賴關係,某人刪除了某些內容,將其複製到某些看起來很方便的東西中,從而導致某些內容會被破壞。通常這會給解決它帶來麻煩。只需爲您的存儲庫設置適當的內務管理(例如僅保存最後的x個版本)。 –