使用配置文件来控制构建哪些Maven模块

Gal*_*eño 34 profiles maven

我在maven POM.xml中有以下XML:

<profiles>
  <profile>
     <id>default</id>
     <activation>
        <activeByDefault>true</activeByDefault>
        <property>
           <name>default</name>
           <value>!disabled</value>
        </property>
     </activation>
     <modules>
        <module>m1</module>
        <module>m2</module>
        <module>m3</module>
     </modules>
  </profile>
  <profile>
     <id>x</id>
     <modules>
        <module>m1</module>
     </modules>
  </profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)

我想要实现的是:

  1. 当我跑步时mvn install,我希望它能够建立m1,m2和m3项目.

  2. 当我跑步时mvn install -Px,我希望它只能构建m1.

我目前的问题是,使用上面的代码,选项2构建所有m1,m2和m3.

Gal*_*eño 47

找到解决方案的人,首先定义'x'配置文件和'默认',它工作正常(疯狂的Maven !!).这是最终结果:

   <profiles>
      <!-- DO NOT CHANGE THE *ORDER* IN WHICH THESE PROFILES ARE DEFINED! -->
      <profile>
         <id>x</id>
         <modules>
            <module>m1</module>
         </modules>
      </profile>
      <profile>
         <id>default</id>
         <activation>
            <activeByDefault>true</activeByDefault>
         </activation>
         <modules>
            <module>m1</module>
            <module>m2</module>
            <module>m3</module>
         </modules>
      </profile>
   </profiles>
Run Code Online (Sandbox Code Playgroud)

  • 我同意。我遇到了同样的问题,但解决方案是当我使用配置文件时,我必须从 &lt;project&gt; 根目录中明确删除我的模块并在 &lt;profiles&gt; 中声明它们(从而创建默认配置文件)。我尝试切换顺序来验证这个答案,但这里没有任何改变。@Galder Zamarreño 您使用的是什么 Maven 版本?我想尝试并复制以确保它不是 Maven 错误。我的是 3.5.0。 (3认同)
  • 值得一提的是删除pom.xml中的所有&lt;modules&gt;声明,而仅使用&lt;profiles&gt;内部的声明。 (2认同)

EMM*_*ICH 5

您可以runByDefault从命令行禁用已设置为true的maven配置文件,如下所示:

mvn install -P !default

注意,这需要Maven版本2.0.10.