我有這個結構的maven項目。如何從maven中的不同父模塊獲取相同的屬性?
我想和不同特性的不同耳朵使用相同的罐子。 當我運行「mvn install」時,它會創建2個EAR,但不能使用此配置進行過濾。我該如何解決這個問題?
我有這個結構的maven項目。如何從maven中的不同父模塊獲取相同的屬性?
我想和不同特性的不同耳朵使用相同的罐子。 當我運行「mvn install」時,它會創建2個EAR,但不能使用此配置進行過濾。我該如何解決這個問題?
使用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>
你可以請發表你想改變與maven的POM和配置嗎? – JFPicard
因此''{conf.path}'在JAR2中以某種方式硬編碼? – lexicore
@lexicore no。它使用父級屬性並在xml文件中進行過濾。 –