maven-2 - 使用 Maven 创建 tar.gz 存档

标签 maven-2 archive maven-assembly-plugin

我有一个 Maven 项目,在 src/main 目录下有一个名为 output 的子目录。这个文件夹需要打包成tar.gz。使用程序集插件时,如下所示:

从 pom.xml:

<build>
<finalName>front</finalName>
<plugins>
    <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2-beta-5</version>
    <configuration>
      <descriptors>
        <descriptor>src/main/assembly/assembly.xml</descriptor>
      </descriptors>
    </configuration>
  </plugin>
  </plugins>
</build>

程序集.xml:
<assembly>
    <id>bundle</id> 
    <formats>
        <format>tar.gz</format>
    </formats>
    <fileSets>
        <fileSet>
            <directory>src/main/output</directory>
        </fileSet>
</fileSets>
</assembly>

我的问题是我正在尝试结果将是运行 tar 实用程序本身,这意味着在提取时获取 输出 目录及其所有内容。我得到的是包含所有项目路径的输出文件夹 - name/src/main/output。

最佳答案

您需要将程序集描述符配置为 不是 包含基本目录并为 fileSet 配置输出目录:

<assembly>
  <id>bundle</id>
  <formats>
    <format>tar.gz</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <fileSets>
    <fileSet>
      <directory>src/main/output</directory>
      <outputDirectory>output</outputDirectory>
    </fileSet>
  </fileSets>
</assembly>

使用上面的程序集描述符,我得到以下结果(在重现结构的项目上运行时):

$ mvn 清洁装配:装配
...
$ cd 目标
$ tar zxvf Q3330855-1.0-SNAPSHOT-bundle.tar.gz
输出/
输出/你好.txt

也可以看看
  • 大会Descriptor Format引用
  • 关于maven-2 - 使用 Maven 创建 tar.gz 存档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3330855/

    相关文章:

    java - NoClassDefFoundError for dependent library projects in Android app project(使用maven作为构建工具)

    maven - 如何测试 Maven 程序集目录的内容是否正确?

    java - Maven 程序集插件 chmod 输出文件夹

    database - 在不影响向其中插入记录的进程的情况下归档一个巨大的数据库(oracle)

    linux - 从文件列表中获取输入的 Tar 归档

    macos - 更新现有 Mac 应用程序时创建的通用存档?

    java - Maven 程序集 : config files best practice

    maven-2 - 为什么maven发布插件允许在依赖管理中使用SNAPSHOT版本?

    maven-2 - 针对不同配置文件的 Maven 构建

    web-services - 使用 axis 和 maven 访问 Web 服务