【发布时间】:2014-02-05 10:57:16
【问题描述】:
我正在尝试将模块的主要工件保留在程序集插件复制的二进制文件之外。 useProjectArtifact 应该可以做到这一点,但它对我没有任何影响。
在下面的配置中,myGroup:myModule 是多模块项目的模块之一,并且从该多模块项目中调用程序集插件。
<excludes> 和 <useProjectAttachments> 不应该是必需的,但即使它们也无济于事。
查看调试输出,很明显 Mavne 甚至在开始处理依赖集之前就已经复制了模块工件......这是有道理的,事实上我一直期待 <useProjectArtifact> 元素会直接出现在 moduleSet 或 binaries 元素中(因为它不适用于依赖项)...但是 XSD 不支持。
这让我发疯了,任何建议都非常欢迎!
Maven 调试输出:
[DEBUG] Processing binary artifact for module project: myGroup:myModule:bundle:4.1.0.1-SNAPSHOT
[DEBUG] Adding artifact: myGroup:myModule:bundle:4.1.0.1-SNAPSHOT with file: C:\root\myModule\target\myModule-4.1.0.1-SNAPSHOT.jar to assembly location: outputdir/myModule-4.1.0.1-SNAPSHOT.jar.
[DEBUG] Adding file: C:\root\myModule\target\myModule-4.1.0.1-SNAPSHOT.jar to archive location: MyProject-4.1.0.1-SNAPSHOT/outputdir/myModule-4.1.0.1-SNAPSHOT.jar
[WARNING] NOTE: Currently, inclusion of module dependencies may produce unpredictable results if a version conflict occurs.
[DEBUG] Processing binary dependencies for module project: myGroup:myModule:bundle:4.1.0.1-SNAPSHOT
[DEBUG] Processing DependencySet (output=null)
[DEBUG] Filtering dependency artifacts WITHOUT transitive dependency path information.
配置:
<moduleSet>
<includes>
<include>myGroup:myModule</include>
</includes>
<binaries>
<excludes>
<exclude>myGroup:myModule</exclude>
</excludes>
<outputDirectory>outputdir</outputDirectory>
<unpack>false</unpack>
<dependencySets>
<dependencySet>
<useProjectArtifact>false</useProjectArtifact>
<useProjectAttachments>false</useProjectAttachments>
<useTransitiveDependencies>false</useTransitiveDependencies>
<includes>
<include>*:javax.mail</include>
</includes>
</dependencySet>
</dependencySets>
</binaries>
</moduleSet>
【问题讨论】:
-
有什么理由不在您的依赖项中使用“提供”的 maven 范围?
-
您使用哪个版本的 Maven 和 maven-assembly-plugin?你能显示完整的程序集描述符,而不仅仅是它的一部分吗?
-
我正在使用 maven 3.1.0 和装配插件 v. 2.4。描述符中除了
标头和 之外没有其他内容。我想我刚刚找到了答案,请参阅我的下一个回复。 -
@Aurélien 不确定您的意思,我确实希望 javax.mail 进入程序集,因此它不是“提供”而是“运行时”。问题是主模块工件被包含在内 - 这不是依赖项,而且 AFAIK 它没有范围。
标签: maven maven-assembly-plugin