maven-assembly-plugin

一、maven打包工具

使用maven对项目进行打包,可用以下三种plugin

  • maveb-jar-plugin : maven默认打包插件,用来创建project jar
  • maven-shade-plugin : 用来打可执行包(executable jar)
  • maven-assembly-plugin : 支持定制化打包方式

下面简单介绍以下maven-assembly-plugin

二、使用方法

1、descriptorRefs

官方提供的定制化打包方式,包括bin,jar-with-dependencies,src,project。

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <!-- NOTE: We don't need a groupId specification because the group is
             org.apache.maven.plugins ...which is assumed by default.
         -->
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
        [...]
</project>
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

2、descriptors

指定打包文件src/main/assembly/assembly.xml,在该配置文件内指定打包操作。

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
          <descriptors>
            <descriptor>src/main/assembly/assembly.xml</descriptor>
          </descriptors>
        </configuration>
        [...]
</project>
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

三、配置文件参数解释说明

1、id

<id>release</id>
 
  • 1

id标识符,添加到生成文件名称的后缀符。如果指定id的话,目标文件名则是 a r t i f a c t I d − {artifactId}- artifactId{id}.tar.gz

2、formats

maven-assembly-plugin 支持的打包格式有zip、tar、tar.gz (or tgz)、tar.bz2 (or tbz2)、jar、dir、war,可以同时指定多个打包格式

<formats>
    <format>tar.gz</format>
    <format>dir</format>
</formats>
 
  • 1
  • 2
  • 3
  • 4

3、fileSets

管理一组文件的存放位置,核心元素如下表所示:

元素类型作用
outputDirectory String 指定文件集合的输出目录,该目录是相对于根目录
includes/include* List 包含文件
excludes/exclude* List 排除文件
fileMode String 指定文件属性,使用八进制表达,分别为(User)(Group)(Other)所属属性,默认为 0644
<fileSets>
    <fileSet>
      <includes>
        <include>bin/**</include>
      </includes>
      <fileMode>0755</fileMode>
    </fileSet>

    <fileSet>
      <includes>
        <include>/conf/**</include>
        <include>logs</include>
      </includes>
    </fileSet>

  </fileSets>
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

files

可以指定目的文件名到指定目录,其他和 fileSets 相同,核心元素如下表所示。

元素类型作用
source String 源文件,相对路径或绝对路径
outputDirectory String 输出目录
destName String 目标文件名
fileMode String 设置文件 UNIX 属性
<files>
    <file>
      <source>README.txt</source>
      <outputDirectory>/</outputDirectory>
    </file>
  </files>
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

工程目录结构示例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pxH3zFn3-1623839921009)(C:\Users\liuzhihao.HOLLYSYS\AppData\Roaming\Typora\typora-user-images\1623836394032.png)]

 
文章知识点与官方知识档案匹配,可进一步学习相关知识
Java技能树Java概览Maven基础58340 人正在系统学习中
posted @ 2022-09-12 16:35  门罗的魔术师  阅读(277)  评论(0)    收藏  举报