使用Maven创建ZIP存档

时间:2012-05-15 04:49:35

标签: maven-2 zip

我在这里按照了如何在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)?

3 个答案:

答案 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目录中。