如何使用 Maven 程序集插件仅压缩特定目录
How to zip only specific directories using 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 文件时,它应该只包含四个目录。
我怎样才能做到这一点?
maven-assembly-plugin 是否足以执行此操作,还是我应该创建一个 mojo?
您误用了 directory
和 outputDirectory
。
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>
我在构建项目时使用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 文件时,它应该只包含四个目录。
我怎样才能做到这一点? maven-assembly-plugin 是否足以执行此操作,还是我应该创建一个 mojo?
您误用了 directory
和 outputDirectory
。
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>