天天看點

SpringBoot 打包配置去除第三方依賴包

目前搭建springboot 微服務項目是最流行的架構。使用起來非常友善。搭建springboot架構。請自行參考其他文檔。這一節主要解決的問題就是。我們打包上傳部署。

以前我們打包,都是把整個項目打成jar或者war包的形式。上傳内容都是好幾百mb大小、那麼接下來我們如何。瘦身打包。并且部署呢?

 1.先了解原理:

    瘦身打包和和正常打包的差別。就一點:(1)BOOT-INF/lib  是否存依賴第三方包。

直接幹貨代碼:

WIN10系統:

1.正常打包

<build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!-- 指定該Main Class為全局的唯一入口 -->
                <mainClass>com.cy.plat.cyadmin.CyAdminApplication</mainClass>
                <layout>ZIP</layout>
                <includes>
                    <!-- 設定沒有jar包-->
                    <!--<include>
                        <groupId>nothing</groupId>
                        <artifactId>nothing</artifactId>
                    </include>-->
                </includes>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal><!--可以把依賴的包都打包到生成的Jar包中-->
                    </goals>
                </execution>
            </executions>
        </plugin>
        <!--<plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.3</version>
            <configuration>
                <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                <dockerDirectory>src/main/docker</dockerDirectory>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>-->
    </plugins>
</build>      

2.瘦身打包:

<build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!-- 指定該Main Class為全局的唯一入口 -->
                <mainClass>com.cy.plat.cyadmin.CyAdminApplication</mainClass>
                <layout>ZIP</layout>
                <includes>
                    <!-- 設定沒有jar包-->
                    <include>
                        <groupId>nothing</groupId>
                        <artifactId>nothing</artifactId>
                    </include>
                </includes>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal><!--可以把依賴的包都打包到生成的Jar包中-->
                    </goals>
                </execution>
            </executions>
        </plugin>
        <!--<plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.3</version>
            <configuration>
                <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                <dockerDirectory>src/main/docker</dockerDirectory>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>-->
    </plugins>
</build>      

比較方法其實就是

就是在 spring-boot-maven-plugin這個插件中,加入這麼一句話

<!-- 設定沒有jar包-->
            <include>
                   <groupId>nothing</groupId>
                   <artifactId>nothing</artifactId>
               </include>      

 

3.如何部署:

我們把正常打包的項目解壓出來。找到 BOOT-INF/lib把整個lib包,複制一份,放到和瘦身jar包放同一個目錄下:

SpringBoot 打包配置去除第三方依賴包

最後啟動指令:

java -Dloader.path=/path/to/lib -jar /path/to/cy-admin.jar

備注:

  • 将/path/to/改成實際的路徑。
  • -Dloader.path=lib檔案夾路徑

或者目前目錄指令可以用這個:

繼續閱讀