Springboot如何基于assembly服務化實現打包

 更新時間:2020-06-14 04:46:14   作者:佚名   我要評論(0)

(1)首先我們編輯 assembly.xml 配置文件,在前文的基礎上新增第三方依賴設置(高亮部分),實現將第三方的 jar 包添加到壓縮包里的 lib 目錄:


<&#63;xml versi

(1)首先我們編輯 assembly.xml 配置文件,在前文的基礎上新增第三方依賴設置(高亮部分),實現將第三方的 jar 包添加到壓縮包里的 lib 目錄:

<?xml version="1.0" encoding="UTF-8"?>
<assembly>
  <!--
    必須寫,否則打包時會有 assembly ID must be present and non-empty 錯誤
    這個名字最終會追加到打包的名字的末尾,如項目的名字為 hangge-test-0.0.1-SNAPSHOT,
    則最終生成的包名為 hangge-test-0.0.1-SNAPSHOT-bin.tar.gz
   -->
  <id>bin</id>
  <!-- 打包的類型,如果有N個,將會打N個類型的包 -->
  <formats>
<!--    <format>tar.gz</format>-->
    <format>zip</format>
  </formats>
  <includeBaseDirectory>true</includeBaseDirectory>

  <!--第三方依賴設置-->
  <dependencySets>
    <dependencySet>
      <!-- 不使用項目的artifact,第三方jar不要解壓,打包進zip文件的lib目錄 -->
      <useProjectArtifact>false</useProjectArtifact>
      <outputDirectory>lib</outputDirectory>
      <unpack>false</unpack>
    </dependencySet>
  </dependencySets>

  <!--文件設置-->
  <fileSets>
    <!--
      0755->即用戶具有讀/寫/執行權限,組用戶和其它用戶具有讀寫權限;
      0644->即用戶具有讀寫權限,組用戶和其它用戶具有只讀權限;
    -->
    <!-- 將src/main/assembly/bin目錄下的所有文件輸出到打包后的bin目錄中 -->
    <fileSet>
      <directory>src/main/assembly/bin</directory>
      <outputDirectory>bin</outputDirectory>
      <fileMode>0755</fileMode>
      <!--如果是腳本,一定要改為unix.如果是在windows上面編碼,會出現dos編寫問題-->
      <lineEnding>unix</lineEnding>
      <filtered>true</filtered><!-- 是否進行屬性替換 -->
    </fileSet>
    <!-- 將src/main/assembly/config目錄下的所有文件輸出到打包后的config目錄中 -->
    <fileSet>
      <directory>src/main/assembly/config</directory>
      <outputDirectory>config</outputDirectory>
      <fileMode>0644</fileMode>
    </fileSet>
    <!-- 將src/main/resources下配置文件打包到config目錄 -->
    <fileSet>
      <directory>src/main/resources</directory>
      <outputDirectory>./config</outputDirectory>
      <includes>
        <include>**/*.xml</include>
        <include>**/*.properties</include>
        <include>**/*.yml</include>
      </includes>
      <filtered>true</filtered><!-- 是否進行屬性替換 -->
    </fileSet>
    <!-- 將項目啟動jar打包到lib目錄中 -->
    <fileSet>
      <directory>target</directory>
      <outputDirectory>./</outputDirectory>
      <includes>
        <include>*.jar</include>
      </includes>
    </fileSet>
    <!-- 將項目說明文檔打包到docs目錄中 -->
    <!-- <fileSet>
      <directory>.</directory>
      <outputDirectory>./docs</outputDirectory>
      <includes>
        <include>*.md</include>
      </includes>
      <fileMode>0644</fileMode>
    </fileSet>-->
    <fileSet>
      <directory>docs</directory>
      <outputDirectory>./docs</outputDirectory>
      <fileMode>0644</fileMode>
    </fileSet>
    <fileSet>
      <directory>src/main/assembly/docs</directory>
      <outputDirectory>./docs</outputDirectory>
      <fileMode>0644</fileMode>
    </fileSet>
  </fileSets>
</assembly>

(2)接著編輯項目的 pom.xml 文件,先前使用的是 spring-boot-maven-plugin 來打包,這個插件會將項目所有的依賴打入項目 jar 包里面。我們將其替換為 maven-jar-plugin,并進行相關設置

 <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>
              <!-- 是否要把第三方jar加入到類構建路徑 -->
              <addClasspath>true</addClasspath>
              <!-- 外部依賴jar包的最終位置 -->
              <!-- 因為我們將第三方jar和本項目jar放在同一個目錄下,這里就使用./ -->
              <classpathPrefix>./lib</classpathPrefix>
              <!-- 項目啟動類 -->
              <mainClass>com.yuehang.disneyland.DisneylandApplication</mainClass>
            </manifest>
          </archive>
        </configuration>
      </plugin>
      <plugin>
        <!--主要使用的是maven提供的assembly插件完成-->
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.1.1</version>
        <configuration>
          <descriptors>
            <!--具體的配置文件-->
            <descriptor>src/main/assembly/assembly.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <!--綁定到maven操作類型上-->
            <phase>package</phase>
            <!--運行一次-->
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

然后打包出來的結構

運行就ok了

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

  • Springboot基于assembly的服務化打包方案及spring boot部署方式
  • Springboot jar文件如何打包zip在linux環境運行
  • Springboot項目與vue項目整合打包的實現方式
  • spring boot項目打包成war在tomcat運行的全步驟
  • Spring boot項目打包成jar運行的二種方法
  • Spring Boot將項目打包成war包的操作方法
  • 如何把vuejs打包出來的文件整合到springboot里

相關文章

  • Springboot如何基于assembly服務化實現打包

    Springboot如何基于assembly服務化實現打包

    (1)首先我們編輯 assembly.xml 配置文件,在前文的基礎上新增第三方依賴設置(高亮部分),實現將第三方的 jar 包添加到壓縮包里的 lib 目錄: <&#63;xml versi
    2020-06-14
  • Springboot啟動報錯時實現異常定位

    Springboot啟動報錯時實現異常定位

    首先大家了解什么是Spring Boot?Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來
    2020-06-14
  • SpringBoot如何實現分離資源文件并打包

    SpringBoot如何實現分離資源文件并打包

    Spring Boot項目默認的會打包成單一的jar文件,但是有時候我們并不想讓配置文件、依賴包都跟可執行文件打包到一起。這時候可以在pom.xml文件中進行配置,從而使資源
    2020-06-14
  • 基于Flyway實現簡化Spring Boot項目部署

    基于Flyway實現簡化Spring Boot項目部署

    1.什么是 Flyway 我們在公司做開發時,由于項目需求的變化,或者前期設計缺陷,導致在后期需要修改數據庫,這應該是一個比較常見的事情,如果項目還沒上線,你可能把
    2020-06-14
  • Java Reactor反應器模式使用方法詳解

    Java Reactor反應器模式使用方法詳解

    Reactor反應器模式 到目前為止,高性能網絡編程都繞不開反應器模式。很多著名的服務器軟件或者中間件都是基于反應器模式實現的,如Nginx、Redis、Netty。 反應器
    2020-06-14
  • Java類加載機制實現流程及原理詳解

    Java類加載機制實現流程及原理詳解

    前言   我們知道,Java項目編譯后會生成許許多多的class文件,class文件保存著類的描述信息。虛擬機把描述類的數據從Class文件加載到內存,并對數據進行校驗、轉化
    2020-06-14
  • Python celery原理及運行流程解析

    Python celery原理及運行流程解析

    celery簡介 celery是一個基于分布式消息傳輸的異步任務隊列,它專注于實時處理,同時也支持任務調度。它的執行單元為任務(task),利用多線程,如Eventlet,gevent
    2020-06-14
  • Django QuerySet查詢集原理及代碼實例

    Django QuerySet查詢集原理及代碼實例

    一 概念 Django的ORM中存在查詢集的概念。 查詢集,也稱查詢結果集、QuerySet,表示從數據庫中獲取的對象集合。 當調用如下過濾器方法時,Django會返回查詢集(而
    2020-06-14
  • Python Django中間件使用原理及流程分析

    Python Django中間件使用原理及流程分析

    一、什么是Django中間件   Django 中間件是用來處理Django的請求request和響應response的框架級別的鉤子,它是一個輕量,低級別的插件系統,用于全局范圍內改變
    2020-06-14
  • Pandas缺失值2種處理方式代碼實例

    Pandas缺失值2種處理方式代碼實例

    處理方式: 存在缺失值nan,并且是np.nan: 刪除存在缺失值的:dropna(axis='rows') 替換缺失值:fillna(df[].mean(), inplace=True) 不是缺失值nan,有默認標
    2020-06-14

最新評論

买宝宝用品赚钱吗 期货配资交易 广东十一选五任二计划 黑龙江p62玩法开奖结果 辽宁快乐12遗漏查询 江苏快三走势图怎么看 意胜配资 11选5遗漏北京 想做股票配资合法吗 000001上证指数 幸运飞艇现场开奖查询 山东扑克3豹子遗漏 山东11选5中奖规则及奖金 江西时时彩号码 期货配资公司先选金多多联系 铁龙物流股票行情 湖南幸运赛车为什么停了