依賴包分離部署方案

  • 背景

    生產(chǎn)環(huán)境中,需要本地打包上傳服務(wù)器,而本地打包時,jar中會同時將項目依賴也打入進(jìn)去,造成jar體積過大,為了減小運(yùn)行jar包的體積,可以做如下配置修改。

  • 修改方法
    修改項目子模塊 xxx-xxx-server中的pom文件。

  1. spring-boot-maven-plugin 中增加 configuration 配置,并指定啟動類
  2. 增加 maven-dependency-plugin 依賴打包插件

POM中 build 配置

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>

    </resources>
    <filters>
        <filter>../../src/main/filters/config-${profile.active}.properties</filter>
    </filters>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <includes>
                    <include>
                        <groupId>nothing</groupId>
                        <artifactId>nothing</artifactId>
                    </include>
                </includes>
                <mainClass>com.xxx.v2x.ControlServerApplication</mainClass>
                <layout>ZIP</layout>
            </configuration>
        </plugin>

        <!--拷貝依賴到j(luò)ar外面的lib目錄-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <!--導(dǎo)出所有的 jar 包-->
                <execution>
                    <id>copy-dependencies</id>
                    <!-- 在實際打包中,執(zhí)行任何的必要的操作。 -->
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <!--指定的依賴路徑-->
                        <outputDirectory>${project.build.directory}/lib</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <version>2.6</version>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
                <encoding>UTF-8</encoding>
                <nonFilteredFileExtensions>
                    <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
                </nonFilteredFileExtensions>
            </configuration>
        </plugin>
        <!-- docker打包插件 -->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>${dockerfile-maven-plugin.version}</version>
            <configuration>
                <repository>${docker.image.prefix}/${project.artifactId}</repository>
                <tag>${tiannet-project.version}</tag>
                <buildArgs>
                    <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                </buildArgs>
            </configuration>
        </plugin>

    </plugins>
</build>

**打包成功后,會在target目錄下生成lib文件夾和響應(yīng)的jar包

將lib包下的依賴上傳至服務(wù)器后,每次只需要更改相應(yīng)的jar文件就可以了

  • jar啟動
    修改后的jar中不在包含依賴,所以啟動方式也有鎖改變。需要使用參數(shù) -Dloader。path 指定lib所在路徑。形如:
    java -Dloader.path=./lib -jar xx-xx-server.jar
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容