3

注意:在將此問題標記爲重複項之前,請確保您知道可執行JARfully executable SpringBoot JAR之間的差異。SpringBoot完全可執行jar無內部依賴關係

The official Spring Boot documentation描述瞭如何構建可執行JAR的完全。然後生成的JAR文件可以從/etc/init.d/鏈接起來,並作爲普通的unix服務啓動/停止/重新啓動/靜態化,而無需其他腳本或JSVC工具。

但生成的JAR包含所有的庫,並且可能足夠大(在我的情況下爲70Mb +)。

我想生成這樣的完全可執行JAR沒有庫,但然後能夠運行它作爲Linux上的SystemV服務和以某種方式鏈接外部庫(JAR)。

UPDATE

我想降低成本,以加快deploy->測試 - >修正循環的工件尺寸。有時我通過移動網絡工作,大文件大小可以顯着降低我的工作速度。

如果沒有簡單的配置屬性或配置文件或命令行選項,我會使用一種破解。

在開始時,我可以生成包含所有依賴關係的構建。 然後我可以將它解壓縮並將所有庫移動到一個特殊的文件夾中。

然後我需要將它作爲完全可執行文件再次打包並運行指向帶庫的文件夾。

$ file usual.jar 
usual.jar: Java Jar file data (zip) 
+0

爲什麼?然後,你只需要維護所有的外部依賴關係,這將需要另一個部署步驟等。 – Gregg

+0

@Gregg我已更新該帖子。請讓我知道如果它仍然不清楚。 – gumkins

+0

您可以將其作爲爆炸罐執行。因此,您可以創建胖罐,解壓縮它,僅部署所需的工件,將其餘的「緩存」。看到這篇文章的類似問題:http://bsideup.blogspot.com/2015/04/spring-boots-fat-jars-vs-docker.html – Gregg

回答

6

你可能要考慮使用Spring Boot Thin Launcher我不認爲這可以jar工具來完成,因爲file實用承認完全可執行的JAR文件作爲data

$ file fully-executable.jar 
file fully-executable: data 

不同於通常罐子。它使用您的應用程序代碼創建了一個jar文件,但沒有任何依賴關係。它增加了一個特殊的瘦啓動器,知道如何在執行jar時從遠程Maven倉庫或本地緩存中解析應用程序的依賴關係。根據你想要做什麼的描述來判斷,你可以使用本地緩存選項。

春天啓動的Maven插件生產使用薄發射一個完全可執行的JAR文件的配置是這樣的:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <dependencies> 
       <dependency> 
        <groupId>org.springframework.boot.experimental</groupId> 
        <artifactId>spring-boot-thin-layout</artifactId> 
        <version>1.0.3.RELEASE</version> 
       </dependency> 
      </dependencies> 
      <configuration> 
       <executable>true</executable> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
相關問題