【问题标题】:Include subproject zip file with Maven Assembly Plugin使用 Maven 程序集插件包含子项目 zip 文件
【发布时间】:2015-05-06 13:37:09
【问题描述】:

我的 Maven 项目结构是:

+ parent
++ moduleA
++ moduleB

在 moduleB 中,我使用程序集插件生成第一个 zip 文件。正如预期的那样,它会在 moduleB/target/ 目录中生成一个 moduleB.zip 文件:

<assembly>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <!-- ... -->
    </fileSets>
</assembly>

现在在我的父模块中,我想生成另一个 zip 文件,并包含 moduleB.zip 文件。

我该怎么做?我应该使用模块集吗?依赖集?还有什么?

【问题讨论】:

标签: maven maven-assembly-plugin


【解决方案1】:

当您在父项目中时,您无法创建将嵌入其模块的程序集,但有两种解决方案:

  1. 您可以在moduleB 中创建第二个程序集,它将创建您想要的最终程序集,并且肯定与创建的第一个程序集不同,您只需注意executions 中的顺序你的插件配置
  2. 或者您可以创建第三个模块moduleC (例如^^),它将依赖于moduleB(例如type zipclassifier您可以在 moduleB 中定义,您将在其中创建最终程序集

您可以在这里找到更多信息:http://maven.apache.org/plugins/maven-assembly-plugin/faq.html#module-binaries

就我个人而言,我一直使用的第二个解决方案是带有专用于最终组装的模块。

【讨论】:

  • 那么请告诉我们如何做到这一点。我引用插件 (maven.apache.org/plugins/maven-assembly-plugin/examples/…) 中的文档: 警告:使用 moduleSet 定义的二进制部分涉及一些棘手的考虑,这是 Maven 在多模块上下文中排序和执行项目构建的方式的结果。如果您决定使用它们,请阅读此常见问题解答条目。然后阅读这部分:maven.apache.org/plugins/maven-assembly-plugin/…
  • 如果你能给出一个可行的例子,那就太好了。
  • 你是对的,因为文档是这样说的。但经过多次测试和帖子阅读后,有可用的示例证明它现在是可能的。首先,提一个更详细的例子:books.sonatype.com/mvnref-book/reference/…
  • 此文档确实确认了您的链接信息,但同时指出了一个已关闭的错误(因为无法修复!?)。在错误中,有帖子建议使用assembly:single 作为报告错误的解决方案。此外,它很旧(2006 年关闭)。
  • 总而言之,如果你需要一个工作示例,你可以在这个项目中将child1的包更改为jar github.com/gallardo/SO/tree/master/SO-33999969
猜你喜欢
  • 2018-07-23
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
  • 2015-03-29
  • 2021-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多