假設我有一個模塊A:jar
,其運行時和編譯依賴關係取決於JDK版本。在我的例子中,我有一個pre-jdk6-profile
JAXB API:在JDK 1.6.0之前,我需要包含jaxb-api-nnn.jar
作爲編譯依賴。此配置文件被放置到A.pom
。我也有模組B:war
,這取決於A:jar
。我希望能夠在構建服務器上激活此配置文件以構建JDK 1.5.x可交付成果。當我被激活給定的配置文件執行的Maven,我得到的消息:如何激活依賴模塊中的Maven配置文件?
mvn -Ppre-jdk6-profile -o install
[WARNING]
Profile with id: 'pre-jdk6-profile' has not been activated.
和jaxb-api-nnn.jar
,導致B.war
丟失。但是,如果我從父母pom.xml
構建時激活此配置文件,則一切正常。這意味着配置文件不會從依賴關係繼承,並且父多模塊pom.xml能夠正確構建所有內容,因爲它似乎將所有配置文件合併到了reactor中。
將配置文件移動到父pom會使事情變得更糟,因爲依賴項適用於所有其他項目(例如C:ear
)。這個任務是否有很好的解決方案,也就是說,如果任何模塊A
依賴於模塊B
,那麼正確處理由配置文件激活的所有編譯和運行時相關性?
的輪廓在項目A:jar
如下:
<project ...>
<artifactId>A</artifactId>
<packaging>jar</packaging>
...
<parent>
<artifactId>P</artifactId>
...
</parent>
<profiles>
<profile>
<id>pre-jdk6-profile</id>
<activation>
<jdk>(,1.6.0)</jdk>
</activation>
<dependencies>
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
</dependency>
</dependencies>
</profile>
</profiles>
...
</project>
我是否需要將第二部分添加到模塊「A」或模塊「B」? – 2010-08-22 20:44:51
兩者。在JAR中使用'提供的 ',在默認範圍內的webapp中。但在個人資料裏面。 –
2010-08-23 04:43:22
我相信,我只能使用(b)如果我運行哈德森版本。感謝您的提示。 – 2010-09-07 13:37:16