如何在zip文件中打包多个模块?

时间:2017-05-05 12:43:45

标签: maven maven-assembly-plugin

我有一个多模块项目。 每个模块都打包在自己/目标文件夹中的jar / war文件中。

我想把每个模块jar / war文件和一些配置文件,并把所有内容放在一个zip中。

怎么做?我尝试使用程序集插件,但是到目前为止我设法完成的是各自/目标文件夹中每个模块的zip,所以非常没用^^

1 个答案:

答案 0 :(得分:5)

首先是创建一个单独的模块,让我们称之为dist将父项添加为父模块,并将您希望在生成的zip文件中看到的所有模块添加为依赖项,包括类型warjar等。

应该给出<packaging>pom</packaging>因为这个模块不包含任何需要编译的java代码等等。我们只想创建包含给定依赖项的zip文件。

 <project ..>

 <packaging>pom</packaging>

 <dependencies>
    <dependency>
      <groupId>module-1</groupId>
      <artifactId>module-1-artifact</artifactId>
      <version>${project.version}</version>
      <type>war</type>
    </dependency>
    <dependency>
      <groupId>module-2</groupId>
      <artifactId>module-2-artifact</artifactId>
      <version>${project.version}</version>
    </dependency>
  </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <id>make-bundles</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <descriptors>
                                <descriptor>proj1-assembly.xml</descriptor>
                            </descriptors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

添加以下描述符:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">

  <id>dist-assembly</id>

  <formats>
      <format>zip</format>
  </formats>

  <includeBaseDirectory>false</includeBaseDirectory>

  <dependencySets>
      <dependencySet>
          <outputDirectory>/</outputDirectory>
          <useProjectArtifact>false</useProjectArtifact>
          <unpack>false</unpack>
      </dependencySet>
  </dependencySets>
</assembly>

需要依赖关系以确保Maven正确计算执行顺序。

如果您需要该zip文件中的补充配置,您可以将这些文件添加到src/main/config中,并在汇编描述符中添加fileSets部分。