2015-04-21 54 views
1

我有以下父pom.xml文件Maven構建所有子模塊,即使有輪廓

<groupId>my.group</groupId> 
<artifactId>artifact</artifactId> 
<version>1.0</version> 
<packaging>pom</packaging> 
<modules> 
    <module>../A</module> 
    <module>../B</module> 
</modules> 
<profiles> 
    <profile> 
     <id>P1</id> 
     <modules> 
      <module>../B</module> 
     </modules> 
    </profile> 
<profiles> 

當我嘗試用profile P1(在IDEA 14 Maven來執行這個POM文件的compile goal段項目窗口),它將編譯模塊A和B的

但如果我刪除模塊部分,它將僅編譯模塊B(如上面所提到的配置文件)

<modules> 
    <module>../A</module> 
    <module>../B</module> 
</modules> 

但我想保持模塊的標籤,因爲它是和使用配置文件僅編譯模塊B。有沒有解決方案可以解決這個問題。

+0

爲什麼不使用'mvn -pl moduleB clean package'?切勿使用配置文件包含/排除模塊:http://blog.soebes.de/blog/2013/11/09/why-is-it-bad-to-activate-slash-deactive-modules-by-profiles-in- maven/ – khmarbaise

回答

2

您必須創建一個單獨的配置文件來構建模塊A和B.您可以使該配置文件默認處於活動狀態。所以這不會改變現有的行爲。

<groupId>my.group</groupId> 
<artifactId>artifact</artifactId> 
<version>1.0</version> 
<packaging>pom</packaging> 

<profiles> 
    <profile> 
     <id>P1</id> 
     <modules> 
      <module>../B</module> 
     </modules> 
    </profile> 
    <profile> 
     <id>Everything</id> 
     <modules> 
      <module>../A</module> 
      <module>../B</module> 
     </modules> 
    </profile> 
<profiles> 
+0

感謝您的回覆。我使用模塊標籤來定義所有的模塊,因爲它會被IDEA檢測到並將這些模塊加載到'項目樹'中。所以如果我刪除一個IDE項目樹將不會被填充。根據你所建議的方法,如果我在IDEA maven窗口中取消選擇'Everything'配置文件並僅選擇P1(僅編譯B)IDEA將自動更新項目樹(移除模塊A並僅保留B)[底線:無論選擇的配置文件如何,我都需要在項目樹中包含模塊A和B] –

相關問題