SpringBoot項目瘦身實戰

前言

若是項目依賴太多,網絡帶寬過小,發包要本地構建上傳等等,這些問題很是影響發版效率(是的,某司網絡帶寬過小,上傳一個300M的包要20分鐘,誰受得了)。Java項目雖然依賴會不少,可是當版本迭代穩定以後,依賴基本就不會再變更了,若是能夠把這些不變的依賴提早都放到服務器上,打包的時候忽略這些依賴,那麼打出來的Jar包就會小不少,直接提高發版效率。java

新建項目

springboot-slimming是一個pom工程,server是一個SpringBoot工程,server依賴core,模擬實際生產項目。git

core項目中添加common-lang3的依賴github

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.11</version>
</dependency>
複製代碼

新建一個測試工具類spring

public class TestUtils {

    public static String getUUID() {
        return RandomStringUtils.random(100);
    }

}
複製代碼

server中新建一個TestControllerapache

@RestController
public class TestController {

    @GetMapping(value = "/test")
    public Object test() {
        return TestUtils.getUUID();
    }

}
複製代碼

模擬項目已經完畢,看看打包出來的jar包大小。api

有16.8M大。springboot

項目裏的依賴佔了絕大部分空間。服務器

瘦身

下面開始給項目減肥:markdown

編輯pom

修改pom文件,在spring-boot-maven-plugin 下添加配置:網絡

①指定包含的依賴,不指定的不包含。

<configuration>
    <layout>ZIP</layout>
    <includes>
        <include>
            <artifactId>load_lib_test</artifactId>
            <groupId>test</groupId>
        </include>
    </includes>
</configuration>
複製代碼

②指定不包含的依賴,多個groupId用 , 隔開

<configuration>
    <layout>ZIP</layout>
    <excludeGroupIds>
        com.google.api-ads,
        com.google.api-client,
        org.apache.commons
    </excludeGroupIds>
</configuration>
複製代碼

咱們用方式一,把依賴本身其餘項目的工程添加進來,第三方的依賴所有不要打進jar包。

最終配置:

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <layout>ZIP</layout>
                    <includes>
                        <include>
                            <artifactId>core</artifactId>
                            <groupId>cn.happyjava</groupId>
                        </include>
                    </includes>
                    <!-- <excludeGroupIds>-->
                    <!-- com.google.api-ads,-->
                    <!-- com.google.api-client,-->
                    <!-- org.apache.commons-->
                    <!-- </excludeGroupIds>-->
                </configuration>
            </plugin>
        </plugins>
    </build>
複製代碼

從新打包

此次只有149KB大小了。

查看jar,只剩本身寫的core依賴和一個SpringBoot的依賴了

可是這個jar包是不能直接Java -jar運行的。

image-20210221114904994

直接運行會提示ClassNotFoundException。

導出項目所需依賴

到server目錄地址,執行以下命令

mvn dependency:copy-dependencies -DoutputDirectory=e:/lib
複製代碼

會把項目中的依賴所有導出來(除了咱們忽略的)

運行加載jar包

導出來jar包能夠放到服務器上,之後發版就能夠大大節省時間了。運行時須要添加 -Dloader.path="e:\lib" 來加載jar包。

java -jar -Dloader.path="e:\lib" server-0.0.1-SNAPSHOT.jar
複製代碼

啓動項目

項目能夠正常啓動;訪問接口也正常。

總結

這是關於SpringBoot打包瘦身的介紹,若是由於包太大而影響發版效率,這是一個不錯的解決辦法。

源碼地址

github.com/happyjava00…

相關文章
相關標籤/搜索