我希望创建一个我的“目标”目录($ {project.build.directory)的zip存档。使用maven-assembly-plugin似乎对我来说这样一个简单的任务有点矫枉过正(而且有点复杂 - 为什么我必须使用另一个文件,程序集描述符来处理这样的任务) 我找不到看起来更简单的maven-zip-plugin在http://repo1.maven.org/maven2存储库中。创建maven“目标”目录的zip存档
任何输入?
我希望创建一个我的“目标”目录($ {project.build.directory)的zip存档。使用maven-assembly-plugin似乎对我来说这样一个简单的任务有点矫枉过正(而且有点复杂 - 为什么我必须使用另一个文件,程序集描述符来处理这样的任务) 我找不到看起来更简单的maven-zip-plugin在http://repo1.maven.org/maven2存储库中。创建maven“目标”目录的zip存档
任何输入?
如果bin
预定义装配描述符不符合你的需求,那么你有三种选择:
就个人而言,我只想使用maven具组件插件具有以下zip.xml
描述:
<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>bin</id>
<baseDirectory>/</baseDirectory>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>${project.build.directory}</directory>
</fileSet>
</fileSets>
</assembly>
而在你的POM:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/zip.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- append to the packaging phase. -->
<goals>
<goal>single</goal> <!-- goals == mojos -->
</goals>
</execution>
</executions>
</plugin>
如果您对生成的.zip文件没有任何“特殊”需求,可以使用其中一个预定义的Maven Assembly描述符。预定义的组装描述符可以轻松快捷地创建特定的组件,而无需提供您自己的组装描述符。假设您想使用bin
预定义的描述符。然后在POM的部分的plugins
部分中,您可以添加以下内容。
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<descriptorRefs>
<descriptorRef>bin</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
当然,一如既往与Maven,如果你想要做一些超出默认配置,你必须创建自己的配置,在这种情况下,这意味着你自己的装配描述符。
预先定义的描述符列表记录在here。
不坏的选择。然而,在我的过程结束时,目标目录只包含一个exe文件和一个包含其他exe文件的目录 - al linstallers。我只是想将它们压缩在一起 – Yaneeve 2010-03-25 10:07:49
因此,您的麻烦是默认描述符将打包超过您的需要,比如工作文件夹的内容等。是否存在要打包的目标下的特定文件夹(例如'$ {project.build.directory}/installers'),但您希望省略其他目录?或者你有其他的目标吗? – RTBarnard 2010-03-25 10:12:54
我已经从$ {project.build.directory}目录中删除了所有不需要的文件和目录,只是希望完全压缩其内容。如果你没有比Pascal更好的建议,我想我只需要创建“冗余”汇编文件,并选择他的解决方案... – Yaneeve 2010-03-25 11:55:15
不起作用 - 内置的“bin”是用过的。而我无法弄清楚如何指向非内置的自定义。 – 2013-07-10 21:29:22
在装配插件上使用antrun插件有一个优势,因为它在zip内部以不同方式存储文件大小。如果您使用'ZipInputStream'阅读压缩文件并使用'getSize()',那么您将获得由antrun创建的zip大小的条目大小,对于使用assembly创建的zip文件,它会返回-1。 – 2016-09-16 13:55:36