如何使用maven程序集插件

时间:2015-09-16 13:05:48

标签: maven maven-assembly-plugin

我正在使用maven-assembly-plugin在构建项目时创建项目的zip文件。它很成功。现在我想要的是只压缩项目中的特定目录。

这是我之前用过的pom插件的代码。

 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <id>make shared resources</id>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <phase>package</phase>
                        <configuration>
                            <descriptors>
                                <descriptor>resource.xml</descriptor>
                            </descriptors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

resource.xml文件如下。

<assembly>
    <id>resources</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <!-- Since it bundles all the units -->
            <directory></directory>
            <outputDirectory>/project</outputDirectory>
            <excludes>
                <exclude>pom.xml</exclude>
                <exclude>*.iml</exclude>
                <exclude>*.jar</exclude>
                <exclude>**/src/**</exclude>
                <exclude>**/target/**</exclude>
                <exclude>resource.xml</exclude>
            </excludes>
        </fileSet>
    </fileSets>
</assembly>

我想在maven构建中仅压缩项目的一些目录。

作为一个例子,我在项目中有以下文件夹结构。

project

   |_directories

         |_dir1
             |_ ....
         |_dir2
             |_ ....
         |_dir3
            |_ ....
         |_pom.xml

我想要的是制作只包含目录文件夹的zip文件。解压缩我的zip文件时应该只包含其中的四个目录。

我怎样才能做到这一点? maven-assembly-plugin是否足以执行此操作,还是应该创建mojo?

1 个答案:

答案 0 :(得分:11)

您误用了directoryoutputDirectory

directory是项目中要删除文件的路径(因此在您的情况下应为directories),outputDirectory生成zip文件中的文件夹,文件集所在的位置(因为你不需要顶层目录,它应该是/):

<assembly>
    <id>resources</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <!-- Take everything inside the directories folder -->
            <directory>directories</directory>
            <!-- And place it inside the root of the zip file -->
            <outputDirectory>/</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>