• 使用 descriptorRefs(官方提供的定制化打包方式),官方提供的 descriptorRef 有 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>
    
  • 使用 descriptors,指定打包文件 src/assembly/src.xml,在该配置文件内指定打包操作。
  • <project>
      [...]
      <build>
        [...]
        <plugins>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
              <descriptors>
                <descriptor>src/assembly/src.xml</descriptor>
              </descriptors>
            </configuration>
            [...]
    </project>
    

    描述符文件元素

    <id>release</id>
    

    id 标识符,添加到生成文件名称的后缀符。如果指定 id 的话,目标文件则是 {artifactId}-{id}.tar.gz

    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>
    

    dependencySets

    用来定制工程依赖 jar 包的打包方式,核心元素如下表所示。

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptors> <descriptor>src/main/assembly/release.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>make-assembly</id> <!-- this is used for inheritance merges --> <phase>package</phase> <!-- bind to the packaging phase --> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>

    release.xml

    <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">
      <formats>
        <format>tar.gz</format>
        <format>dir</format>
      </formats>
      <dependencySets>
        <dependencySet>
          <outputDirectory>/lib</outputDirectory>
        </dependencySet>
      </dependencySets>
      <fileSets>
        <fileSet>
          <includes>
            <include>bin/**</include>
          </includes>
          <fileMode>0755</fileMode>
        </fileSet>
        <fileSet>
          <includes>
            <include>/conf/**</include>
            <include>logs</include>
          </includes>
        </fileSet>
      </fileSets>
      <files>
          <source>README.txt</source>
          <outputDirectory>/</outputDirectory>
        </file>
      </files>
    </assembly>
    

    最终创建生成可执行二进制工程

    maven 入门指南