Apache Maven 程序集插件

介绍

用于 Maven 的程序集插件主要旨在允许用户将项目输出及其依赖项、模块、站点文档和其他文件聚合到一个可分发的存档中。

您的项目可以使用方便的预制程序集描述符之一轻松构建分发“程序集” 。这些描述符处理许多常见操作,例如将项目的工件与生成的文档一起打包到单个 zip 存档中。或者,您的项目可以提供自己的描述符,并对依赖项、模块、文件集和单个文件在程序集中的打包方式进行更高级别的控制。

目前它可以创建以下格式的发行版:

  • 压缩
  • 柏油
  • tar.gz(或 tgz)
  • tar.bz2(或 tbz2)
  • 目录
  • 战争
  • 以及已为 ArchiveManager 配置的任何其他格式

如果您的项目想要将您的工件打包到 uber-jar 中,则程序集插件仅提供基本支持。如需更多控制,请使用Maven Shade Plugin

要在 Maven 中使用 Assembly 插件,您只需要:

  • 选择或编写要使用的程序集描述符,
  • 在项目的pom.xml中配置 Assembly Plugin ,以及
  • 在您的项目上运行“mvn assembly:single”。

要编写您自己的自定义程序集,您需要参考程序集描述符格式参考。

什么是大会?

“程序集”是一组文件、目录和依赖项,它们组合成归档格式并分发。例如,假设一个 Maven 项目定义了一个 JAR 工件,它同时包含一个控制台应用程序和一个 Swing 应用程序。这样的项目可以定义两个“程序集”,将应用程序与一组不同的支持脚本和依赖集捆绑在一起。一个程序集是控制台应用程序的程序集,另一个程序集可能是捆绑了一组稍微不同的依赖项的 Swing 应用程序。

程序集插件提供了一种描述符格式,允许您从项目中定义任意文件和目录的程序集。例如,如果您的 Maven 项目包含目录“src/main/bin”,您可以指示Assembly Plugin 将该目录的内容复制到程序集的“bin”目录,并更改目录中文件的权限“bin”目录到 UNIX 模式 755。配置此行为的参数通过程序集描述符提供给程序集插件。

目标

组装插件的主要目标是单一目标。它用于创建所有程序集。所有其他目标均已弃用,并将在未来的版本中删除。

有关 Assembly Plugin 中可用目标的更多信息,请参阅插件文档页面

推荐使用assembly:assemblyassembly:attachedassembly:directoryassembly:directory-inline,因为它们会对正常的构建过程造成严重破坏并促进非标准的构建实践。

assembly:single-directory目标是多余的,已被弃用,取而代之的是dir程序集格式。

最后,assembly:unpack目标已被弃用,取而代之的是更全面的Maven 依赖插件

用法

有关如何使用 Assembly 插件的一般说明可以在使用页面上找到。下面给出的示例中描述了一些更具体的用例。最后但同样重要的是,用户偶尔会向插件的 wiki 页面提供额外的示例、提示或勘误表。

如果您对插件的使用仍有疑问,请查看常见问题解答并随时联系用户邮件列表。邮件列表中的帖子已存档,并且可能已经包含您问题的答案,作为旧线程的一部分。因此,也值得浏览/搜索邮件存档

如果您觉得插件缺少功能或存在缺陷,您可以在我们的问题跟踪器中填写功能请求或错误报告。创建新问题时,请提供您所关注问题的全面描述。特别是对于修复错误,开发人员可以重现您的问题至关重要。出于这个原因,非常感谢附在问题上的整个调试日志、POM 或最好的小演示项目。当然,补丁也是受欢迎的。贡献者可以从我们的源代码库中查看该项目,并将在帮助使用 Maven 的指南中找到补充信息。

例子

为了让您更好地了解 Assembly Plugin 的一些用法,您可以查看可以在此处找到的示例。