2017-04-26 34 views
0

當EAR模塊具有兩個(或更多)的依賴關係與相同的artifactId,Maven的複製這些進入/lib目錄和一個重寫其他。最後,EAR中只有一個庫。Maven的EAR插件 - 兩個庫與相同的artifactId

<dependency> 
    <groupId>com.group1</groupId> 
    <artifactId>same-artifact</artifactId> 
</dependency> 
<dependency> 
    <groupId>com.group2</groupId> 
    <artifactId>same-artifact</artifactId> 
</dependency> 

有沒有一種可能,以手動重命名的依賴(別名?)或JAR文件與整個名稱複製(com.group1.same-artifact.jar而不是僅僅same-artifact.jar)?

編輯: 這一切都只有大約傳遞依賴,最終EAR 應該是這樣的:

/lib 
    /com.group1.same-artifact.jar 
    /com.group2.same-artifact.jar 
/myModule.ejb 
+0

請出示您的全POM文件... – khmarbaise

+0

沒有什麼特別之處我的我的勁歌,這是一個標準的多項目,一個EJB和EAR項目。唯一的一個問題是兩個相同的文物那些EAR插件解壓並重寫... –

回答

0

有此問題的兩個解決方案。一種是通過配置來改變fileNameMapping這樣的:

<project> 
    [...] 
    <build> 
    [...] 
    <pluginManagement> 
    <plugins> 
     [...] 
     <plugin> 
     <artifactId>maven-ear-plugin</artifactId> 
     <version>2.10.1</version> 
     <configuration> 
      <fileNameMapping>full</fileNameMapping> 
     </configuration> 
     </plugin> 
    [...] 
</project> 

其中會使用到的文物groupId+artifactId+version爲他們所有。

也可以使這一變化僅適用於那些artifacts where a clash exsits這樣的:

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-ear-plugin</artifactId> 
     <version>2.10.1</version> 
     <configuration> 
      [...] 
      <modules> 
      <ejbModule> 
       <groupId>artifactGroupId</groupId> 
       <artifactId>artifactId</artifactId> 
       <bundleFileName>anotherName-1.2.3.jar</bundleFileName> 
      </ejbModule> 
      </modules> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
+0

可惜的是同時擁有這些解決方案一個小錯誤: 1.不僅在'/ lib'庫擁有的全名,但模塊以及 2.它僅適用於一個模塊,而不是傳遞庫,因爲我需要 –

+0

當然有使用完整命名的選項,然後將模塊手動重命名。這似乎是一個不是很清晰的解決方案,即使是一個解決辦法...... –

+0

第一種是映射所有文件名這是不是一個錯誤......它完全按照規定。問題是你如何獲得轉換到lib文件夾?你在用SkinnyWar嗎?如果你需要的是模塊可以單獨配置每個...也許你可以提出一個建議,以改善這裏的:https://issues.apache.org/jira/browse/MEAR – khmarbaise

相關問題