我在这里按照了如何在Maven中创建ZIP档案的答案:https://stackoverflow.com/a/2514677/1395165 并提出几个后续问题:
要排除目录的ZIP内容:
如同我的例子:
<fileSet>
<directory>${project.basedir}/src/export</directory>
<useDefaultExcludes>true</useDefaultExcludes>
</fileSet>
在ZIP中我得到了
src
export
Dir1
Dir2
但我只想拥有
Dir1
Dir2
ZIP中的。这可能吗?
输出文件名
使用.zip扩展名创建输出文件名。是否有可能在Maven中将扩展名覆盖为其他内容(例如.abc)?
答案 0 :(得分:15)
outputDirectory选项可用于更改文件输出到的程序集中的目录 - 这应该可以满足您的需要:
<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>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>${project.basedir}/ScriptedBuild/rConnect/extract/</directory>
<useDefaultExcludes>true</useDefaultExcludes>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</assembly>
答案 1 :(得分:1)
将includeBaseDirectory设置为false - 请参阅http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html
答案 2 :(得分:0)
使用
<assembly ...
<baseDirectory>/</baseDirectory>
还有
<fileSet>
<outputDirectory>/</outputDirectory>
这会将所有文件放在zip文件的根目录中。
BaseDirectory设置zip内的目录以用于所有文件,就像将其添加到所有路径一样。这样,当您在不首先创建目录的情况下对其进行向上压缩时,它不会污染您当前的工作目录。
OutputDirectory设置zip文件中的目录。 BaseDirectory仍然是“前置”的。因此,BaseDirectory = /project-1.2.3
和OutputDirectory /src
将在zip内创建project-1.2.3/src/
。
http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html
baseDirectory 字符串设置生成的程序集存档的基本目录。如果未设置,并且includeBaseDirectory == true,则将使用$ {project.build.finalName}。 (自2.2-beta-1起)
outputDirectory 字符串设置相对于程序集根目录的根目录的输出目录。例如,“ log”会将指定的文件放在log目录中。