我正在使用 maven 程序集插件版本 2.2.1 以自定义的专有格式构建包。 作为这个过程的一部分,我需要提取一堆外部文件(我所说的外部是指它们没有列为 Maven 依赖项,但它们是文件系统上的任意文件)。
你知道 maven assembly 是否能够做到这一点吗?我已经看过,显然,它能够在任意文件夹中提取一堆依赖项,但它无法提取外部存档。
最佳答案
使用 <unpack>true</unpack>
在你的<dependencySet>
是要走的路。
Maven 不支持外部存档。因此,您需要使用例如附加它们build-helper:attach-artifact
然后你可以通过 <dependencySet>
引用它
更新
其中一条评论想知道如何避免将附加的 Artifact 安装到 Maven 存储库(本地/远程)中
解决方案是使用一个非传递依赖的虚拟模块。
我们依赖正在构建的程序集而不是用作传递依赖项。
所以你从一个虚拟模块开始,它看起来有点像
<project>
...
<packaging>pom</packaging>
...
<properties>
<maven.deploy.skip>true</maven.deploy.skip>
<maven.install.skip>true</maven.install.skip>
<!-- or you could override the plugin configuration for a safer - but less quick - solution -->
</properties>
...
</project>
该虚拟模块可以使用 build-helper:attach-artifacts
附加文件
您的程序集模块将只列出依赖项 <scope>provided</scope>
和 <optional>true</optional>
作为防止成为传递依赖项的保护措施。 (如果程序集是安装程序包并且不会被其他 Maven 构建使用,则不需要。
好了,压缩内容将从一个存档流式传输到另一个存档,原始文件将不会复制到远程存储库...但是您始终需要构建破解构建组件的任何反应器中的模块。
关于Maven 程序集插件。有什么方法可以直接从描述 rune 件中解压缩/解压缩存档,而不是依赖 antrun 插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12705281/