我試圖讓程序集插件複製的二進制文件中沒有模塊的主要構件。 useProjectArtifact應該完全做到這一點,但它對我沒有任何影響。Maven程序集插件useProjectArtifact選項在多模塊項目中不起作用
在myGroup下面的配置中:myModule是多模塊項目的模塊之一,並且從該多模塊項目調用程序集插件。
<excludes>
和<useProjectAttachments>
不應該需要,但即使他們不幫助。
看着調試輸出,似乎很清楚Mavne已經在開始處理依賴集之前就已經複製了模塊工件......這是有道理的,事實上,我一直期待着所有的元素都會出現在<useProjectArtifact>
上直接在moduleSet或者二進制元素中(因爲它不適用於依賴關係)......但是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的哪個版本?你可以顯示完整的裝配描述符,而不僅僅是它的優秀嗎? – khmarbaise
我正在使用maven 3.1.0和程序集插件v.2.4。描述符中沒有其他內容,但是標題和。我想我只是找到了答案,看看我的下一個迴應。 –
franck102