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

SpringBoot多種生產打包方式詳解

 更新時間:2025年01月07日 08:58:58   作者:Young丶  
生產上發(fā)布?Spring?Boot?項目時,流程頗為繁瑣且低效,但凡代碼有一丁點改動,就得把整個項目重新打包部署,耗時費力不說,生成的?JAR?包還特別臃腫,體積龐大,本文給大家介紹了SpringBoot多種生產打包方式,需要的朋友可以參考下

Springboot 多種生產打包方式簡介

生產上發(fā)布 Spring Boot 項目時,流程頗為繁瑣且低效。但凡代碼有一丁點改動,就得把整個項目重新打包部署,耗時費力不說,生成的 JAR 包還特別臃腫,體積龐大。每次更新項目,光是上傳這大文件就得花費不少時間,嚴重影響工作節(jié)奏。為解決這一痛點,我打算把依賴庫以及配置文件(lib 文件夾下的那些 jar 包, 還有 config 下的 applacation.yml 等文件)從項目主體里剝離出來,后續(xù)部署時,只需發(fā)布核心代碼就行,這樣既能加快部署速度,又能減輕文件傳輸負擔,讓項目更新變得輕松便捷

方法一 插件 spring-boot-maven-plugin

1. 項目應用的配置文件排除 統(tǒng)一打包到 config 目錄下

利用 springboot 中 resource 插件來排除配置,并統(tǒng)一打包到 config 目錄下

<resources>
  <resource>
      <directory>src/main/resources</directory>
       <!--filerting設置為true,則打包過程中會對這些文件進行過濾處理-->
       <filtering>true</filtering>
       <!--指定目標路徑為config-->
      <targetPath>${project.build.directory}/config</targetPath>
      <includes>
      <!--使用通配符-->
         <include>**/*.properties</include>
         <include>**/*.yml</include>
         <include>**/*.xml</include>
     <include>mapper/*.xml</include>
      <!-- 這里可以根據你實際想要包含的配置文件類型來添加更多的include配置 -->
   </includes>
  </resource>
</resources>

2. 把我們寫代碼打包可執(zhí)行 jar,并排除依賴 jar 包

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <configuration>
   <!--項目的啟動類,如果有多個main就必須指定,沒有可以缺失
     <mainClass>XXXXX.TwinWebApplication</mainClass>-->
    <!--解決windows命令行窗口中文亂碼-->
     <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
     <layout>ZIP</layout>
     <!--配置需要打包進項目的jar-->
     <includes>
     <!--填寫需要打包所需要的依賴 。沒有匹配上任何jar包機排除依賴-->
        <include>
             <groupId>no-exists-jar</groupId>
            <artifactId>non-exists-jar</artifactId>
         </include>
      </includes>
  </configuration>
  <executions>
    <execution>
         <goals>
         <!-- 表示當運行mavn package打包時,使用Springboot插件打包 -->
           <goal>repackage</goal>
       </goals>
    </execution>
  </executions>
</plugin>

3 配置依賴的 jar 包 統(tǒng)一打包 lib 目錄

<!--此插件用于將依賴包抽出-->
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-dependency-plugin</artifactId>
   <executions>
   <execution>
      <id>copy-dependencies</id>
      <phase>package</phase>
      <goals>
         <goal>copy-dependencies</goal>
      </goals>
     <configuration>
          <outputDirectory>${project.build.directory}/lib</outputDirectory>
          <excludeTransitive>false</excludeTransitive>
          <stripVersion>false</stripVersion>
          <includeScope>runtime</includeScope>
      </configuration>
    </execution>
  </executions>
</plugin>

打包后目錄結構, 如下圖所示

在這里插入圖片描述

執(zhí)行命令 java -jar -Dloader.path=./lib -jar xxx.jar

注意 springboot 啟動時候會優(yōu)先讀取 config 目錄下配置文件 所以這里不用指定 - Dspring.config.location=XX.yml 文件

在這里插入圖片描述

注意 例如日志文件配置以及 mybits 等配置文件 可以配成絕對路徑 如下所示:

在這里插入圖片描述

方法二 使用 maven-jar-plugin 插件實現

1 使用插件 maven-resources-plugin 處理配置文件打包到 config 目錄

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <configuration>
       <encoding>UTF-8</encoding>
    </configuration>
   <executions>
      <execution>
          <id>copy-dependencies</id>
          <phase>package</phase>
          <goals>
             <goal>copy-resources</goal>
          </goals>
  <configuration>
<!--配置文件打包成config目錄下 -->
      <outputDirectory>${project.build.directory}/twin-web/config</outputDirectory>
      <resources>
      <resource>
      <directory>src/main/resources</directory>
      </resource>
      </resources>
     </configuration>
  </execution>
</executions>
</plugin>

2. 使用 maven-jar-plugin 打包可執(zhí)行 jar 并排除依賴

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-jar-plugin</artifactId>
   <configuration>
      <outputDirectory>
          <!--輸入打包可執(zhí)行的jar到twin-web\libs\下-->
          ${project.build.directory}/twin-web/
       </outputDirectory>
      <archive>
        <addMavenDescriptor>false</addMavenDescriptor>
       <manifest>
             <addClasspath>true</addClasspath>
         <!-- 增加執(zhí)行啟動jar的依賴jar包目錄前綴-->
           <classpathPrefix>./libs/</classpathPrefix>
         <!-- 指定啟動類-->
            <mainClass>com.keqing.twinweb.TwinWebApplication</mainClass>
        </manifest>
        <manifestEntries>
          <!-- 增加配置文件的classpath-->
          <Class-Path>./config/</Class-Path>
      </manifestEntries>
</archive>
<!-- 排除配置文件-->
     <excludes>
         <exclude>*.yml</exclude>
         <exclude>mapper/**</exclude>
         <exclude>*.xml</exclude>
     </excludes>
  </configuration>
</plugin>

3 使用 maven-dependency-plugin 打包 libs 目錄下

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-dependency-plugin</artifactId>
   <executions>
   <execution>
      <id>copy-dependencies</id>
      <phase>package</phase>
      <goals>
         <goal>copy-dependencies</goal>
      </goals>
     <configuration>
          <outputDirectory>${project.build.directory}/twin-web/libs</outputDirectory>
          <excludeTransitive>false</excludeTransitive>
          <stripVersion>false</stripVersion>
          <includeScope>runtime</includeScope>
      </configuration>
    </execution>
  </executions>
</plugin>

使用 package 打包后的目錄

在這里插入圖片描述

查看自己打包后 jar 目錄,注意這種打包方式弊端,按照一定約定格式規(guī)范固定了,一旦依賴 jar 包(包括配置文件目錄等)發(fā)生變化就必須重新打包

在這里插入圖片描述

啟動程序 java -jar xxx.jar

在這里插入圖片描述

方式三 使用 maven-assembly-plugin 打包

maven-assembly-plugin 是 Maven 中的一個插件,它允許用戶將項目的輸出以及依賴、模塊、站點文檔和其他文件打包成一個可發(fā)布的格式,例如 zip、tar.gz、jar 等。以下是使用 maven-assembly-plugin 的一些優(yōu)勢:

  1. 自定義打包格式maven-assembly-plugin 允許你通過定義描述符文件(descriptor)來完全自定義打包的內容和格式。你可以選擇包含或排除特定的文件和目錄。
  2. 一鍵打包:通過一個簡單的 Maven 命令,你可以創(chuàng)建一個包含所有必需依賴的單一歸檔文件,這使得分發(fā)和部署變得非常簡單。
  3. 多環(huán)境支持:可以為不同的環(huán)境(開發(fā)、測試、生產)創(chuàng)建不同的打包配置,使得環(huán)境遷移更加容易。
  4. 依賴管理:插件會自動處理項目依賴,將它們打包到最終的歸檔文件中,無需手動管理。
  5. 模塊化項目支持:對于多模塊項目,maven-assembly-plugin 可以將所有模塊的輸出合并到一個歸檔文件中。
  6. 預配置的描述符:插件提供了一些預定義的描述符,如 binjar-with-dependencies 等,可以直接使用,無需自定義。
  7. 靈活性:你可以通過修改描述符文件來調整打包行為,以適應不同的需求。
  8. 集成性maven-assembly-plugin 與 Maven 生態(tài)系統(tǒng)緊密集成,可以與其他 Maven 插件協(xié)同工作。
  9. 文檔和社區(qū)支持:由于 maven-assembly-plugin 是 Maven 的一部分,因此有廣泛的文檔和社區(qū)支持。

1. 項目應用的配置文件排除

<resources>
  <resource>
         <directory>src/main/resources</directory>
             <!--filerting設置為true,則打包過程中會對這些文件進行過濾處理-->
          <filtering>true</filtering>
         <includes>
             <!--使用通配符-->
            <include>**/*.properties</include>
            <include>**/*.yml</include>
            <include>**/*.xml</include>
           <include>mapper/*.xml</include>
        <!-- 這里可以根據你實際想要包含的配置文件類型來添加更多的include配置 -->
        </includes>
   </resource>
</resources>

2. 配置 spring-boot-maven-plugin

<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
   <configuration>
    <!--項目的啟動類,如果有多個main就必須指定,沒有可以缺失
         <mainClass>XXXXX.TwinWebApplication</mainClass>-->
        <!--解決windows命令行窗口中文亂碼-->
        <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
        <layout>ZIP</layout>
           <!--配置需要打包進項目的jar-->
       <includes>
        <!--填寫需要打包所需要的依賴 。沒有匹配上任何jar包機排除依賴-->
          <include>
          <groupId>no-exists-jar</groupId>
          <artifactId>non-exists-jar</artifactId>
          </include>
      </includes>
   </configuration>
   <executions>
         <execution>
           <goals>
                 <!-- 表示當運行mavn package打包時,使用Springboot插件打包 -->
              <goal>repackage</goal>
          </goals>
      </execution>
  </executions>
</plugin>

3 引入 springboot 里約定 maven-assembly-plugin

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
<!-- 打包文件名字不包含 assembly.xml 中 id -->
      <appendAssemblyId>false</appendAssemblyId>
      <descriptors>
      <!--項目所在目錄配置文件的 assembly.xml文件 -->
        <descriptor>assembly.xml</descriptor>
      </descriptors>
  </configuration>
<executions>
   <execution>
   <id>make-assembly</id>
   <phase>package</phase>
   <goals>
          <goal>single</goal>
    </goals>
    </execution>
  </executions>
</plugin>

配置 assembly.xml 文件

<assembly>
   <!-- 打包文件名的標識符,用來做后綴-->
    <id>make-assembly</id>
    <!-- 打包的類型,如果有N個,將會打N個類型的包 -->
   <formats>
      <format>tar.gz</format>
      <format>zip</format>
   </formats>
     <!-- 壓縮包下是否生成和項目名相同的根目錄 -->
   <includeBaseDirectory>true</includeBaseDirectory>
     <!-- 用來設置一組文件在打包時的屬性。-->
  <fileSets>
   <!-- 0755->即用戶具有讀/寫/執(zhí)行權限,組用戶和其它用戶具有讀寫權限;-->
    <!-- 0644->即用戶具有讀寫權限,組用戶和其它用戶具有只讀權限;-->
    <!-- 將src/bin目錄下的jar啟動腳本輸出到打包后的目錄中 -->
    <fileSet>
     <!--lineEnding選項可用于控制給定的行結束文件 -->
       <lineEnding>unix</lineEnding>
       <directory>${basedir}/bin</directory>
       <outputDirectory>${file.separator}</outputDirectory>
       <fileMode>0755</fileMode>
       <includes>
         <include>**.sh</include>
         <include>**.bat</include>
      </includes>
   </fileSet>
<!-- 把項目的配置文件,打包進壓縮文件的config目錄 -->
   <fileSet>
      <directory>${basedir}/src/main/resources</directory>
      <outputDirectory>config</outputDirectory>
      <fileMode>0644</fileMode>
      <includes>
           <include>*.properties</include>
           <include>*.yml</include>
          <include>*.xml</include>
         <include>mapper/*.xml</include>
      </includes>
   </fileSet>
   <!-- 把項目自己編譯出來的jar文件,打包進zip文件的根目錄 -->
    <fileSet>
      <directory>${project.build.directory}</directory>
      <outputDirectory>${file.separator}</outputDirectory>
      <includes>
          <include>*.jar</include>
      </includes>
   </fileSet>
 </fileSets>
<!-- 依賴包的拷貝-->
<dependencySets>
   <dependencySet>
     <unpack>false</unpack>
    <useProjectArtifact>true</useProjectArtifact>
    <outputDirectory>lib</outputDirectory>
    <scope>provided</scope>
  </dependencySet>
  <dependencySet>
      <unpack>false</unpack>
      <useProjectArtifact>true</useProjectArtifact>
      <outputDirectory>lib</outputDirectory>
      <scope>system</scope>
  </dependencySet>
  <dependencySet>
     <unpack>false</unpack>
     <useProjectArtifact>true</useProjectArtifact>
     <outputDirectory>lib</outputDirectory>
     <scope>runtime</scope>
  </dependencySet>
</dependencySets>
</assembly>

打包后目錄

在這里插入圖片描述

解壓 zip 目錄查看

在這里插入圖片描述

使用命令啟動項目 java -jar -Dloader.path=./lib -jar xxx.jar

在這里插入圖片描述

以上就是SpringBoot多種生產打包方式詳解的詳細內容,更多關于SpringBoot生產打包的資料請關注腳本之家其它相關文章!

相關文章

  • Java隊列篇之實現數組模擬隊列及可復用環(huán)形隊列詳解

    Java隊列篇之實現數組模擬隊列及可復用環(huán)形隊列詳解

    像棧一樣,隊列(queue)也是一種線性表,它的特性是先進先出,插入在一端,刪除在另一端。就像排隊一樣,剛來的人入隊(push)要排在隊尾(rear),每次出隊(pop)的都是隊首(front)的人
    2021-10-10
  • 使用MyBatis進行數據庫映射的方式

    使用MyBatis進行數據庫映射的方式

    這篇文章主要介紹了使用MyBatis進行數據庫映射的方式,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-10-10
  • Milvus快速入門及用Java操作Milvus的全過程

    Milvus快速入門及用Java操作Milvus的全過程

    Milvus是面向向量的數據庫,通過相似性搜索處理非結構化數據特征,本文給大家介紹Milvus快速入門以及用Java操作Milvus的方法,感興趣的朋友一起看看吧
    2025-09-09
  • java如何獲得redis所有的key-value

    java如何獲得redis所有的key-value

    這篇文章主要介紹了java如何獲得redis所有的key-value,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • SpringMVC中Json數據格式轉換

    SpringMVC中Json數據格式轉換

    本文主要介紹了SpringMVC中Json數據格式轉換的相關知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • java的MybatisPlus調用儲存過程的返回數據問題

    java的MybatisPlus調用儲存過程的返回數據問題

    這篇文章主要介紹了java的MybatisPlus調用儲存過程的返回數據問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java中判斷json key是否存在的幾種方法

    java中判斷json key是否存在的幾種方法

    在使用Java處理JSON數據時,如何判斷某一個key是否存在?本文就來介紹三種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-09-09
  • javaWeb連接數據庫實現簡單登陸注冊功能的全過程

    javaWeb連接數據庫實現簡單登陸注冊功能的全過程

    初學javaWeb,老師留下一小作業(yè),用JAVA實現與服務器端交互,實現登錄和注冊功能,下面這篇文章主要給大家介紹了關于javaWeb連接數據庫實現簡單登陸注冊功能的相關資料,需要的朋友可以參考下
    2022-06-06
  • 關于MyBatis 查詢數據時屬性中多對一的問題(多條數據對應一條數據)

    關于MyBatis 查詢數據時屬性中多對一的問題(多條數據對應一條數據)

    這篇文章主要介紹了MyBatis 查詢數據時屬性中多對一的問題(多條數據對應一條數據),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • SpringBoot集成screw實現數據庫文檔生成的代碼示例

    SpringBoot集成screw實現數據庫文檔生成的代碼示例

    數據庫設計文檔是項目技術文檔的重要組成部分,Screw 是一款開源的數據庫文檔生成工具,它支持多種數據庫類型,并能生成豐富格式的文檔,本文將通過一個實際的例子,展示如何使用 Spring Boot 集成 Screw 生成數據庫設計文檔
    2024-07-07

最新評論

瑞丽市| 儋州市| 泰和县| 台安县| 孟州市| 普宁市| 岳普湖县| 江陵县| 龙门县| 三台县| 九龙县| 老河口市| 曲阳县| 大同市| 博野县| 弥渡县| 清涧县| 会泽县| 筠连县| 德清县| 交口县| 门头沟区| 靖远县| 南华县| 海南省| 垣曲县| 甘德县| 新龙县| 新巴尔虎右旗| 上虞市| 天峨县| 贺兰县| 衡山县| 隆林| 江永县| 邯郸市| 德安县| 改则县| 汪清县| 海盐县| 伊川县|