溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Springboot基于assembly服務(wù)化實(shí)現(xiàn)打包的詳細(xì)教程

發(fā)布時(shí)間:2020-06-23 10:48:12 來源:億速云 閱讀:722 作者:清晨 欄目:編程語言

這篇文章將為大家詳細(xì)講解有關(guān)Springboot基于assembly服務(wù)化實(shí)現(xiàn)打包的詳細(xì)教程,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

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

<&#63;xml version="1.0" encoding="UTF-8"&#63;>
<assembly>
  <!--
    必須寫,否則打包時(shí)會(huì)有 assembly ID must be present and non-empty 錯(cuò)誤
    這個(gè)名字最終會(huì)追加到打包的名字的末尾,如項(xiàng)目的名字為 hangge-test-0.0.1-SNAPSHOT,
    則最終生成的包名為 hangge-test-0.0.1-SNAPSHOT-bin.tar.gz
   -->
  <id>bin</id>
  <!-- 打包的類型,如果有N個(gè),將會(huì)打N個(gè)類型的包 -->
  <formats>
<!--    <format>tar.gz</format>-->
    <format>zip</format>
  </formats>
  <includeBaseDirectory>true</includeBaseDirectory>

  <!--第三方依賴設(shè)置-->
  <dependencySets>
    <dependencySet>
      <!-- 不使用項(xiàng)目的artifact,第三方j(luò)ar不要解壓,打包進(jìn)zip文件的lib目錄 -->
      <useProjectArtifact>false</useProjectArtifact>
      <outputDirectory>lib</outputDirectory>
      <unpack>false</unpack>
    </dependencySet>
  </dependencySets>

  <!--文件設(shè)置-->
  <fileSets>
    <!--
      0755->即用戶具有讀/寫/執(zhí)行權(quán)限,組用戶和其它用戶具有讀寫權(quán)限;
      0644->即用戶具有讀寫權(quán)限,組用戶和其它用戶具有只讀權(quán)限;
    -->
    <!-- 將src/main/assembly/bin目錄下的所有文件輸出到打包后的bin目錄中 -->
    <fileSet>
      <directory>src/main/assembly/bin</directory>
      <outputDirectory>bin</outputDirectory>
      <fileMode>0755</fileMode>
      <!--如果是腳本,一定要改為unix.如果是在windows上面編碼,會(huì)出現(xiàn)dos編寫問題-->
      <lineEnding>unix</lineEnding>
      <filtered>true</filtered><!-- 是否進(jìn)行屬性替換 -->
    </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><!-- 是否進(jìn)行屬性替換 -->
    </fileSet>
    <!-- 將項(xiàng)目啟動(dòng)jar打包到lib目錄中 -->
    <fileSet>
      <directory>target</directory>
      <outputDirectory>./</outputDirectory>
      <includes>
        <include>*.jar</include>
      </includes>
    </fileSet>
    <!-- 將項(xiàng)目說明文檔打包到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)接著編輯項(xiàng)目的 pom.xml 文件,先前使用的是 spring-boot-maven-plugin 來打包,這個(gè)插件會(huì)將項(xiàng)目所有的依賴打入項(xiàng)目 jar 包里面。我們將其替換為 maven-jar-plugin,并進(jìn)行相關(guān)設(shè)置

 <build>
    <plugins>
      <!-- 指定啟動(dòng)類,將依賴打成外部jar包 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <!-- 生成的jar中,不要包含pom.xml和pom.properties這兩個(gè)文件 -->
            <addMavenDescriptor>false</addMavenDescriptor>
            <manifest>
              <!-- 是否要把第三方j(luò)ar加入到類構(gòu)建路徑 -->
              <addClasspath>true</addClasspath>
              <!-- 外部依賴jar包的最終位置 -->
              <!-- 因?yàn)槲覀儗⒌谌絡(luò)ar和本項(xiàng)目jar放在同一個(gè)目錄下,這里就使用./ -->
              <classpathPrefix>./lib</classpathPrefix>
              <!-- 項(xiàng)目啟動(dòng)類 -->
              <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>
            <!--運(yùn)行一次-->
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

然后打包出來的結(jié)構(gòu)

Springboot基于assembly服務(wù)化實(shí)現(xiàn)打包的詳細(xì)教程

運(yùn)行就ok了

關(guān)于Springboot基于assembly服務(wù)化實(shí)現(xiàn)打包的詳細(xì)教程就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI