2016-11-29 57 views
0

我有這個結構的maven項目。如何從maven中的不同父模塊獲取相同的屬性?

enter image description here

我想和不同特性的不同耳朵使用相同的罐子。 當我運行「mvn install」時,它會創建2個EAR,但不能使用此配置進行過濾。我該如何解決這個問題?

+0

你可以請發表你想改變與maven的POM和配置嗎? – JFPicard

+0

因此''{conf.path}'在JAR2中以某種方式硬編碼? – lexicore

+0

@lexicore no。它使用父級屬性並在xml文件中進行過濾。 –

回答

0

使用Maven,您無法過濾屬於已經構建的JAR模塊的文件。
每個模塊都是單獨構建和打包的。所以,如果你JAR需要有它的價值是動態填充的屬性,我可以建議你兩個解決方案:

  • 把屬性文件,其中包含在每個EAR的conf.path和JAR中的鍵值您可以使用助手類在類路徑中查找與conf.path鍵相關聯的值。
    如果您需要該值,或者在應用程序啓動後立即執行此處理,那麼您很快就會需要該值。

  • 創建屬性不同的兩種JAR。在這種情況下,屬性信息沒有被存儲在EAR不再而是直接在JAR
    Look at the classifier element

分類器允許區分 建相同POM但不同的是僞影他們的內容。它是一些可選的並且 任意的字符串,如果存在的話,被附加到版本號後面的工件名稱 。作爲這個元素的動機, 考慮了一個項目,該項目提供了一個針對JRE 1.5的工件,但同時也是一個仍支持JRE 1.4的工件。第一個神器可以配備分類器jdk15和 ,第二個可以使用jdk14,這樣客戶可以選擇使用哪一個。

分類器的另一個常見用例是需要將輔助構件附加到項目的主構件上。如果您瀏覽了Maven中央存儲庫,您將注意到分類器源 和javadoc用於部署項目源代碼和API文檔 以及打包的類文件。

產生多個罐子,該方法配置在構建的maven-jar-plugin插件:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jar-plugin</artifactId> 
     <version>3.0.2</version> 
     <executions> 
      <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      <configuration> 
       <classifier>jarVersion2</classifier> 
       <includes> 
       <include>**/jarVersion2.properties</include> 
       </includes> 
      </configuration> 
      </execution> 
      <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      <configuration> 
       <classifier>jarVersion1</classifier> 
       <includes> 
       <include>**/jarVersion1.properties</include> 
       </includes> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 

後,你可以在你的戰爭一樣,引用jarVersion神器的戰爭1:

<dependency> 
     <groupId>groupIdOfTheJar</groupId> 
     <artifactId>artifactIdOfTheJar</artifactId> 
     <version>versionOfTheJar</version> 
     <classifier>jarVersion1</classifier> 
    </dependency> 

而且就像戰爭2一樣:

<dependency> 
     <groupId>groupIdOfTheJar</groupId> 
     <artifactId>artifactIdOfTheJar</artifactId> 
     <version>versionOfTheJar</version> 
     <classifier>jarVersion2</classifier> 
    </dependency> 
相關問題