2015-04-21 56 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] –

相关问题