【问题标题】:Create a ZIP archive with Maven使用 Maven 创建 ZIP 存档
【发布时间】:2012-05-15 04:49:34
【问题描述】:

我在这里遵循了如何在 Maven 中创建 ZIP 存档的答案:https://stackoverflow.com/a/2514677/1395165 并有几个后续问题:

要排除目录的 ZIP 内容:

在我的例子中:

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

在 ZIP 中我得到 ​​p>

src
  export
     Dir1
     Dir2

但我只想拥有

Dir1
Dir2 

在 ZIP 中。这可能吗?

输出文件名

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

【问题讨论】:

    标签: maven-2 zip


    【解决方案1】:

    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> 
    

    【讨论】:

    • 你确实为我指明了正确的方向。但是我必须这样做&lt;outputDirectory&gt;..&lt;/outputDirectory&gt; 才能实现所要求的。我错过了什么吗?
    • 如果你不设置baseDirectory,那么它默认为${project.build.finalName},就像压缩文件中的App-0.0.3-SNAPSHOT/一样。
    【解决方案2】:

    将 includeBaseDirectory 设置为 false - 请参阅 http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

    【讨论】:

    • 感谢您的回复。我已经尝试过了,还有很多 baseDirectory 的变体。我已经发布了我的 zip.xml 作为答案,因为它似乎不想在评论区发布。
    【解决方案3】:

    使用

    <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 String 设置生成的程序集存档的基本目录。如果未设置且 includeBaseDirectory == true,则将使用 ${project.build.finalName}。 (从 2.2-beta-1 开始)

    outputDirectory String 设置相对于程序集根目录的根目录的输出目录。例如,“log”会将指定的文件放到日志目录中。

    【讨论】:

      猜你喜欢
      • 2011-01-31
      • 2011-03-20
      • 2010-11-12
      • 2013-06-18
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多