Maven中,可以将配置文件重写模块(不包括任何)(In Maven, can a profile

2019-06-24 15:15发布

maven ,一旦你定义你的modules在你pom.xml所有配置聚集在他们定义的模块:(相关部分只)

<project>
    <modules>
        <module>module1</module>
    </modules>
    <profiles>
         <profile>
             <id>pr1</id>
             <modules>
                 <moudule>module2</module>
             </modules>

如果执行mvn clean它会通过命令module1

如果发出mvn clean -Ppr1它会沿着传递到module1module2

我不知道在maven 3就可以有一个pom.xml与子模块和覆盖。 我的意思是执行一个配置文件,而不是添加自己的模块来构建力的,如:

<project>
    <!-- omitted -->
    <modules>
        <!-- modules -->
    </modules>
    <build>
        <!-- build -->
    </build>
    <profiles>
        <profile>
             <!-- This profile with no modules -->
        </profile>
    </profiles>
</project>

要求听起来很傻,但我只是想知道,如果有一种机制,就像在插件配置。

<configuration self.combine="override"

问候!

ssedano

Answer 1:

这是不可能的。 配置文件配置总是与主要配置合并,所以你只能在你的情况下添加模块。

你可以做什么,而不是,但是,是创造某种“默认”配置文件(由<activeByDefault>true</activeByDefault><activation>部分)时,没有其他配置文件被调用已启用,并把您的默认模块列出存在。 然后,当Maven是指定配置文件建立通话,这种“默认”的个人资料被使用,但是当你明确地调用至少一个配置文件,它不是,那么你可以这样定义模块从头名单。



Answer 2:

虽然这个问题是旧的,谷歌仍然是排名高,所以是有意义的增加一个新的答案。

您可以通过无财产招使用激活来实现你想要什么。

<profiles>
        <!-- By default, include the modules -->
        <profile>
            <id>full-build</id>
            <activation>
                <!-- Activation by absence of a property. Run normally, without -Dfull-build -->
                <property>
                    <name>!skip-modules</name>
                </property>
            </activation>
            <modules>
                <module>module1</module>
                <module>module2</module>
                <module>module3</module>
            </modules>
        </profile>

        <!-- No-modules build -->
        <profile>
            <id>no-modules</id>
            <activation>
                <!-- Activation by a property. Run with -Dskip-modules to activate -->
                <property>
                    <name>skip-modules</name>
                </property>
            </activation>
            <modules>
            </modules>
        </profile>
    </profiles>


Answer 3:

你可以做这样的事情:

  <profiles>
    <profile>
      <id>run-xyz</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <modules>
        <module>www-ab</module>
        <module>www-cd</module>
      </modules>
    </profile>

    <profile>
      <id>run-its</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <modules>
        <module>www-db</module>
        <module>www-it</module>
      </modules>
    </profile>
  </profiles>

如果你是在谈论这样的事情。 但我会建议是这样的事情非常小心。

这只是你如何设置activeByDefault的问题。 有了这个有可能创造出更多或更少的任意组合。



文章来源: In Maven, can a profile override the modules (to not include any)
标签: maven maven-3