使用Maven创建ZIP压缩文件

13

我按照在这里提供的Maven创建ZIP归档文件的答案进行了操作:https://dev59.com/5XE85IYBdhLWcg3w_Ixr#2514677,并有一些后续问题:

要排除的目录:

就像示例中一样:

<fileSet>
    <directory>${project.basedir}/src/export</directory>
    <useDefaultExcludes>true</useDefaultExcludes>
</fileSet>

我得到的ZIP文件是

src
  export
     Dir1
     Dir2

但是我只想拥有

Dir1
Dir2 

在ZIP中。这可能吗?

输出文件名

输出文件名使用.zip扩展名创建。在Maven中是否可以覆盖扩展名为其他内容(比如.abc)?

3个回答

17

可以使用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> 

你肯定指引我走了正确的方向。不过,为了完成所要求的事情,我必须这样做 <outputDirectory>..</outputDirectory>。我有什么遗漏了吗? - mks-d
1
如果您没有设置baseDirectory,则默认为${project.build.finalName},例如在zip文件中的App-0.0.3-SNAPSHOT/ - Chloe

1

感谢您的回复。我已经尝试了许多baseDirectory的变化,但似乎都不起作用。由于在评论区无法发布,我已将我的zip.xml文件作为答案发布。 - sedge

1

使用

<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"将指定的文件放在日志目录中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接