最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot打包實現(xiàn)項目JAR包和依賴JAR包分離

 更新時間:2022年02月18日 14:25:42   作者:gin90  
這篇文章主要介紹了springboot打包實現(xiàn)項目JAR包和依賴JAR包分離,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

寫在前面的

當(dāng)我們使用spring boot寫項目時,一般都會遇到一個問題,那就是spring boot打包時,會將自己寫的代碼和項目的所有依賴文件打成一個可執(zhí)行的jar包。

通常我們的項目都是運行在服務(wù)器上的,當(dāng)項目更新時,每次都要向服務(wù)器上傳這個包。如果項目的依賴包很多,那么這個文件就會非常大。

大文件上傳不僅浪費帶寬,有時候網(wǎng)絡(luò)不穩(wěn)定,傳輸一半斷網(wǎng),又要重新上傳,非常麻煩。

默認的maven配置

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

如果能將項目外部依賴和自己的代碼包分開打包,當(dāng)修改項目后,只需要再次覆蓋修改后的包,那豈不是美滋滋?

解決方案

使用maven的assembly打包插件

assembly配置

在項目中創(chuàng)建一個文件,我放在src/main/assembly/assembly.xml中,大家可以根據(jù)喜好自己創(chuàng)建。

assembly中的具體配置

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    <!--
        必須寫,否則打包時會有 assembly ID must be present and non-empty 錯誤
        這個名字最終會追加到打包的名字的末尾,如項目的名字為 speed-api-0.0.1-SNAPSHOT,
        則最終生成的包名為 speed-api-0.0.1-SNAPSHOT-bin.zip
     -->
    <id>bin</id>
    <!-- 打包后的文件格式,可以是zip,tar,tar.gz,tar.bz2,jar,war,dir -->
    <formats>
        <format>zip</format>
    </formats>
    <!-- 壓縮包下是否生成和項目名相同的根目錄 -->
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <!-- 不使用項目的artifact,第三方j(luò)ar不要解壓,打包進zip文件的lib目錄 -->
            <useProjectArtifact>false</useProjectArtifact>
            <outputDirectory>lib</outputDirectory>
            <unpack>false</unpack>
        </dependencySet>
    </dependencySets>
    <fileSets>
        <!-- 把項目相關(guān)的說明文件,打包進zip文件的根目錄 -->
        <fileSet>
            <directory>${project.basedir}</directory>
            <outputDirectory></outputDirectory>
            <includes>
                <include>README*</include>
                <include>LICENSE*</include>
                <include>NOTICE*</include>
            </includes>
        </fileSet>
        <!-- 把項目的配置文件,打包進zip文件的config目錄 -->
        <fileSet>
            <directory>${project.basedir}/src/main/resources</directory>
            <outputDirectory>config</outputDirectory>
        </fileSet>
        <!-- 把項目的腳本文件,打包進zip文件的bin目錄 -->
        <fileSet>
            <directory>${project.basedir}/src/main/bin</directory>
            <outputDirectory>bin</outputDirectory>
        </fileSet>
        <!-- 把項目自己編譯出來的jar文件,打包進zip文件的根目錄 -->
        <fileSet>
            <directory>${project.build.directory}</directory>
            <outputDirectory></outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>

maven中的配置

<build>
    <plugins>
        <!-- 指定啟動類,將依賴打成外部jar包 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <!-- 生成的jar中,不要包含pom.xml和pom.properties這兩個文件 -->
                    <addMavenDescriptor>false</addMavenDescriptor>
                    <manifest>
                        <!-- 是否要把第三方j(luò)ar放到manifest的classpath中 -->
                        <addClasspath>true</addClasspath>
                        <!-- 外部依賴jar包的最終位置 -->
                        <classpathPrefix>lib/</classpathPrefix>
                        <!-- 項目啟動類 -->
                        <mainClass>com.zbrx.speed.App</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        <!-- 使用assembly打包 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptors>
                    <!-- assembly配置文件位置 -->
                    <descriptor>src/main/assembly/assembly.xml</descriptor>
                </descriptors>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <!-- 打包發(fā)布時,跳過單元測試 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <skipTests>true</skipTests>
            </configuration>
        </plugin>
    </plugins>
</build>

最終打包后的效果

壓縮包里的文件內(nèi)容

lib中的文件

config配置文件

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java-spark中各種常用算子的寫法示例

    java-spark中各種常用算子的寫法示例

    這篇文章主要給大家介紹了關(guān)于java-spark中各種常用算子的寫法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • SpringMVC+Shiro的基本使用及功能介紹

    SpringMVC+Shiro的基本使用及功能介紹

    本文給大家介紹SpringMVC+Shiro的基本使用,Apache?Shiro是Java的一個安全框架,Shiro本身無法知道所持有令牌的用戶是否合法,因為除了項目的設(shè)計人員恐怕誰都無法得知,本文只介紹最常見也最重要的一種實現(xiàn)方式數(shù)據(jù)庫查詢
    2022-04-04
  • Java全面解析string類型的xml字符串

    Java全面解析string類型的xml字符串

    這篇文章主要介紹了Java全面解析string類型的xml字符串,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java 反射獲取類詳細信息的常用方法總結(jié)

    Java 反射獲取類詳細信息的常用方法總結(jié)

    Java 反射獲取類詳細信息的常用方法總結(jié),需要的朋友可以參考一下
    2013-03-03
  • Java將文件上傳到ftp服務(wù)器

    Java將文件上傳到ftp服務(wù)器

    這篇文章主要為大家詳細介紹了Java將文件上傳到ftp服務(wù)器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • ruoyi微服務(wù)版本搭建運行方式

    ruoyi微服務(wù)版本搭建運行方式

    這篇文章主要介紹了ruoyi微服務(wù)版本搭建運行方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java實現(xiàn)基于token認證的方法示例

    Java實現(xiàn)基于token認證的方法示例

    這篇文章主要介紹了Java實現(xiàn)基于token認證的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • java數(shù)據(jù)結(jié)構(gòu)實現(xiàn)雙向鏈表功能

    java數(shù)據(jù)結(jié)構(gòu)實現(xiàn)雙向鏈表功能

    這篇文章主要為大家詳細介紹了java數(shù)據(jù)結(jié)構(gòu)實現(xiàn)雙向鏈表功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Spring計劃任務(wù)用法實例詳解

    Spring計劃任務(wù)用法實例詳解

    這篇文章主要介紹了Spring計劃任務(wù)用法,結(jié)合實例形式詳細分析了spring計劃任務(wù)相關(guān)原理、配置、使用方法及操作注意事項,需要的朋友可以參考下
    2019-11-11
  • 如何實現(xiàn)nohup?java進程號一直在變方法步驟詳解

    如何實現(xiàn)nohup?java進程號一直在變方法步驟詳解

    這篇文章主要為大家介紹了如何實現(xiàn)nohup?java進程號一直在變方法步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11

最新評論

麦盖提县| 宜章县| 宜宾县| 镇江市| 彭泽县| 虎林市| 开阳县| 高密市| 榆树市| 宜兰市| 罗城| 普格县| 中牟县| 东至县| 高密市| 山阴县| 福泉市| 遂昌县| 定西市| 钟祥市| 大港区| 安乡县| 乡宁县| 贵定县| 苏州市| 巴塘县| 通化县| 吴川市| 南木林县| 广汉市| 河北区| 慈溪市| 盐亭县| 疏勒县| 扎鲁特旗| 西华县| 祥云县| 申扎县| 冀州市| 扎赉特旗| 大田县|