成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深入探討Maven打包:打造精致的Zip包

開發(fā) 前端
當(dāng)我們執(zhí)行 mvn package 命令進(jìn)行打包時(shí),Maven 會(huì)按照配置文件 package.xml 和插件的配置來(lái)生成最終的分發(fā)包。Maven Assembly Plugin 會(huì)根據(jù)配置文件定義的規(guī)則將項(xiàng)目的相關(guān)文件、依賴庫(kù)等內(nèi)容打包成指定的格式,并完成最終的分發(fā)包構(gòu)建。

在部署Spring Boot生產(chǎn)項(xiàng)目時(shí),首先需要使用Maven將其打包成一個(gè)JAR文件或者包含JAR文件的ZIP文件。隨后,通過(guò)堡壘機(jī)將打包好的文件上傳至服務(wù)器進(jìn)行部署,或構(gòu)建成Docker鏡像進(jìn)行發(fā)布。在這一過(guò)程中,我們需要將項(xiàng)目中的配置文件或靜態(tài)資源放置在JAR包之外,這樣在修改配置文件或靜態(tài)資源時(shí)就無(wú)需重新打包。為了構(gòu)建ZIP文件,我們使用了Maven Assembly Plugin插件,該插件用于創(chuàng)建項(xiàng)目分發(fā)包,通過(guò)一個(gè)XML描述文件定義打包內(nèi)容。本文將詳細(xì)介紹這一流程。

maven-assembly-plugin簡(jiǎn)介

maven-assembly-plugin 是一個(gè) Maven 插件,用于創(chuàng)建項(xiàng)目分發(fā)包。該插件可以幫助將項(xiàng)目的構(gòu)建輸出、依賴庫(kù)等資源打包成一個(gè)歸檔文件,如 JAR、ZIP、TAR 等,方便項(xiàng)目的部署和發(fā)布。

以下是 maven-assembly-plugin 的一些主要特點(diǎn)和用途:

  • 靈活的配置:通過(guò)配置插件,可以定義不同的打包方式和內(nèi)容,滿足各種項(xiàng)目的需求。可以選擇包含依賴庫(kù)、特定文件、目錄結(jié)構(gòu)等。
  • 多種打包格式:支持生成不同格式的歸檔文件,如 JAR 包含所有依賴、ZIP 壓縮文件、TAR 文件等,可以根據(jù)實(shí)際情況選擇合適的打包格式。
  • 自定義描述符:除了預(yù)定義的描述符外,還可以編寫自定義描述符文件,以更精細(xì)的方式控制打包過(guò)程,定義需要包含的文件、目錄結(jié)構(gòu)等。
  • 插件執(zhí)行階段:通常在 Maven 構(gòu)建的某個(gè)階段(如 package 階段)觸發(fā)執(zhí)行,生成所需的分發(fā)包。
  • 簡(jiǎn)化部署流程:打包成歸檔文件后,可以方便地進(jìn)行部署和發(fā)布,簡(jiǎn)化了項(xiàng)目的交付流程。

maven-assembly-plugin 配置

讓我們來(lái)看一下 Maven Assembly Plugin 的配置文件 package.xml,這個(gè)文件定義了項(xiàng)目打包的內(nèi)容和形式。在這個(gè) XML 文件中,我們定義了項(xiàng)目打包的格式為 zip 和 dir,同時(shí)指定了一些文件和目錄的打包規(guī)則。

package.xml

<?xml versinotallow="1.0" encoding="UTF-8"?>
<assembly
        xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
 <!--項(xiàng)目打包統(tǒng)一文件 -->
 <id>package</id>
 <formats>
  <format>zip</format>
    <format>dir</format>
 </formats>
 <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <outputDirectory>lib</outputDirectory>
            <scope>runtime</scope>
            <excludes>
                <exclude>${groupId}:${artifactId}</exclude>
            </excludes>
        </dependencySet>
    </dependencySets>
 <fileSets>
  <!-- 啟動(dòng)腳本文件打包 -->
  <fileSet>
   <directory>bin/</directory>
   <outputDirectory>./</outputDirectory>
            <includes>
                <include>*.sh</include>
            </includes>
   <fileMode>0755</fileMode>
   <lineEnding>unix</lineEnding>
  </fileSet>
  <!--資源文件打包 -->
  <fileSet>
   <directory>src/main/resources</directory>
   <outputDirectory>./</outputDirectory>
  </fileSet>
  <!-- 啟動(dòng)jar文件打包 -->
  <fileSet>
   <directory>${project.build.directory}</directory>
   <outputDirectory>./</outputDirectory>
   <includes>
    <include>*.jar</include>
   </includes>
  </fileSet>
 </fileSets>
</assembly>

在 package.xml 中,我們還可以定義需要打包的依賴庫(kù)、啟動(dòng)腳本文件、靜態(tài)資源文件以及啟動(dòng) jar 文件等內(nèi)容。也可以在通過(guò)來(lái)排除一些我們不需要的資源, 通過(guò)這個(gè) XML 文件,我們可以靈活地配置項(xiàng)目打包的內(nèi)容和結(jié)構(gòu)。

Maven Build 配置

在項(xiàng)目的POM文件中,我們還需要引入maven-assembly-plugin插件,并指定其配置文件。由于我們需要將配置文件和靜態(tài)資源放置在JAR包之外,因此在打包過(guò)程中需要排除這些文件。Maven的配置示例如下:

<build>
  <!--<finalName>${project.artifactId}-${project.version}</finalName>-->
  <sourceDirectory>src/main/java</sourceDirectory>
  <resources>
   <resource>
    <directory>${project.basedir}/src/main/resources</directory>
    <filtering>true</filtering>
    <excludes>
     <exclude>*</exclude>
    </excludes>
   </resource>
   <resource>
    <directory>${project.basedir}/src/main/resources</directory>
    <filtering>true</filtering>
   </resource>
  </resources>
  <plugins>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
     <encoding>UTF-8</encoding>
     <nonFilteredFileExtensions>
      <nonFilteredFileExtension>xls</nonFilteredFileExtension>
      <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
      <nonFilteredFileExtension>csv</nonFilteredFileExtension>
     </nonFilteredFileExtensions>
    </configuration>
   </plugin>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
     <archive>
      <!-- 添加index則不從mainfest中讀取classpath,而是從Index.list中讀取
                        <index>true</index> -->
      <manifest>
       <mainClass>cn.xj.snowflake.SnowflakeApplication</mainClass>
       <addClasspath>true</addClasspath>
       <classpathPrefix>lib/</classpathPrefix>
       <packageName>${project.artifactId}-${project.version}</packageName>
      </manifest>
     </archive>
     <excludes>
      <exclude>config/**</exclude>
      <exclude>mapper/**</exclude>
      <exclude>mybatis/**</exclude>
      <exclude>static/**</exclude>
      <exclude>templates/**</exclude>
      <exclude>i18n/**</exclude>
      <exclude>lib/**</exclude>
      <exclude>vm/**</exclude>
      <exclude>*.txt</exclude>
      <exclude>*.xml</exclude>
      <exclude>*.properties</exclude>
      <exclude>*.yml</exclude>
      <exclude>*.properties</exclude>
     </excludes>
    </configuration>
   </plugin>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
     <execution>
      <id>copy</id>
      <phase>compile</phase>
      <goals>
       <goal>copy-dependencies</goal>
      </goals>
      <configuration>
       <outputDirectory>${project.build.directory}/lib</outputDirectory>
       <overWriteReleases>false</overWriteReleases>
       <overWriteSnapshots>false</overWriteSnapshots>
       <overWriteIfNewer>true</overWriteIfNewer>
       <includeScope>compile</includeScope>
      </configuration>
     </execution>
    </executions>
   </plugin>
   <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
     <appendAssemblyId>false</appendAssemblyId>
     <descriptors>
      <descriptor>conf/package.xml</descriptor>
     </descriptors>
    </configuration>
    <executions>
     <execution>
      <id>make-assembly</id>
      <phase>package</phase>
      <goals>
       <goal>single</goal>
      </goals>
     </execution>
    </executions>
   </plugin>
  </plugins>
 </build>

在 Maven Build 的配置中,我們引入了 maven-resources-plugin、maven-jar-plugin、maven-dependency-plugin 和 maven-assembly-plugin 這幾個(gè)插件,并對(duì)它們進(jìn)行了相應(yīng)的配置。

總結(jié)

當(dāng)我們執(zhí)行 mvn package 命令進(jìn)行打包時(shí),Maven 會(huì)按照配置文件 package.xml 和插件的配置來(lái)生成最終的分發(fā)包。Maven Assembly Plugin 會(huì)根據(jù)配置文件定義的規(guī)則將項(xiàng)目的相關(guān)文件、依賴庫(kù)等內(nèi)容打包成指定的格式,并完成最終的分發(fā)包構(gòu)建。

通過(guò)以上的配置和打包過(guò)程,我們可以很方便地使用 Maven 來(lái)管理項(xiàng)目的打包和發(fā)布,而不需要手動(dòng)進(jìn)行復(fù)雜的文件拷貝和整理工作。

責(zé)任編輯:武曉燕 來(lái)源: 修己xj
相關(guān)推薦

2009-12-23 16:13:00

WPF Attache

2009-12-07 16:07:03

PHP類的繼承

2010-03-31 14:58:03

云計(jì)算

2009-11-20 17:17:08

Oracle函數(shù)索引

2021-05-17 05:36:02

CSS 文字動(dòng)畫技巧

2010-11-22 14:18:32

MySQL鎖機(jī)制

2010-07-21 09:38:15

PHP緩存技術(shù)

2009-12-01 16:34:21

PHP表單

2023-10-23 12:35:36

Golang追加操作

2009-10-16 18:20:07

綜合布線系統(tǒng)

2009-11-12 13:56:54

2009-12-14 14:40:10

Ruby全局域變量

2012-02-28 14:43:43

2024-01-26 06:42:05

Redis數(shù)據(jù)結(jié)構(gòu)

2017-01-03 17:57:46

Android異步精髓Handler

2009-10-16 09:17:39

屏蔽布線系統(tǒng)

2009-12-07 13:55:58

PHP array_m

2013-07-11 09:45:48

扁平化扁平化設(shè)計(jì)

2009-12-11 11:08:31

靜態(tài)路由策略

2010-03-05 13:44:00

Python序列
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产伦精品一区二区三区精品视频 | av资源中文在线 | 精品啪啪 | 成人亚洲性情网站www在线观看 | 亚洲 中文 欧美 日韩 在线观看 | 国产精品久久久久久久久久妞妞 | 在线永久看片免费的视频 | 成人国产精品视频 | 色噜噜亚洲男人的天堂 | 欧美成年人网站 | 欧美成人免费在线 | 国产999精品久久久 午夜天堂精品久久久久 | 91亚洲精品久久久电影 | 欧美日韩在线一区二区 | 久久久久国产 | 亚洲视频在线播放 | 午夜在线精品偷拍 | 日韩午夜电影 | 精品欧美乱码久久久久久 | 91精品国产91久久久久游泳池 | 午夜精品久久久久久久久久久久 | 日本免费一区二区三区视频 | 一区二区三区四区五区在线视频 | 日日操日日干 | 黄瓜av| 美日韩免费视频 | 午夜www| 国产成人久久av免费高清密臂 | 久久尤物免费一区二区三区 | 久久国产精品精品国产色婷婷 | 懂色一区二区三区免费观看 | 99视频在线播放 | 亚洲最色网站 | 韩国av一区二区 | 日本羞羞影院 | 亚洲成人av| 日本久久www成人免 成人久久久久 | 国产视频精品免费 | 久久不卡 | 日韩欧美视频在线 | 国产十日韩十欧美 |