2014-02-05 40 views
0

我試圖讓程序集插件複製的二進制文件中沒有模塊的主要構件。 useProjectArtifact應該完全做到這一點,但它對我沒有任何影響。Maven程序集插件useProjectArtifact選項在多模塊項目中不起作用

在myGroup下面的配置中:myModule是多模塊項目的模塊之一,並且從該多模塊項目調用程序集插件。

<excludes><useProjectAttachments>不應該需要,但即使他們不幫助。

看着調試輸出,似乎很清楚Ma​​vne已經在開始處理依賴集之前就已經複製了模塊工件......這是有道理的,事實上,我一直期待着所有的元素都會出現在<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> 
+0

任何不使用你的依賴項中「提供」的maven作用域的原因? –

+0

您使用的是Maven和maven-assembly-plugin的哪個版本?你可以顯示完整的裝配描述符,而不僅僅是它的優秀嗎? – khmarbaise

+0

我正在使用maven 3.1.0和程序集插件v.2.4。描述符中沒有其他內容,但是標題和。我想我只是找到了答案,看看我的下一個迴應。 – franck102

回答

0

我剛剛意識到dependencySets可以在頂層在裝配在這一水平,而不是內部使用時使用,而且確實moduleSet useProjectArtifact屬性做它應該做的事情。

所以我不確定屬性在moduleSet內部時是否不受支持,或者這是否是Maven缺陷。 我的解決方案是使用頂層依賴關係集解決了我的特定用例,該模塊的javax.mail依賴項也是多模塊項目的依賴項,因此它被正確包含在程序集中。

相關問題