簡體   English   中英

部署彈簧靴胖子

[英]Deploying spring boot fat jar

我有一個春季啟動應用程序,可以在生產環境中很好地工作,但是最近我對胖子罐的部署策略有一些疑問。胖子罐的總大小約為80 MB,並且由於它們都捆綁成一個罐子,所以每次我更換時一行,就重新部署了這個80 MB的程序包。 如何在/ lib目錄中將此胖jar分為一個主jar和其他jar(不是我開發的)。 我有什么選擇?

您有幾種選擇,最簡單的方法( 並由官方文檔建議 )是僅提取胖子jar文件。

$ unzip -q myapp.jar
$ java org.springframework.boot.loader.JarLauncher

這樣做有兩個問題,首先,您的應用程序代碼現在將是一堆類文件(不在其自己的jar中)。
第二個問題是您仍在使用spring-boot加載程序,該加載程序不再提供太多實用程序,而且還會污染文件系統。

另一種選擇是更改構建以提供所需的內容。
使用gradle可以使用應用程序插件 ,對於maven,我建議使用appassembler插件

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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM