一个配置文件属性被 Maven 中的另一个配置文件属性覆盖?

One profile properties are overriding with another profile properties in maven?

我对 Maven 配置文件有疑问。说到细节,我有两个配置文件,例如 profile1 和 profile2。我已经为这两个配置文件以及需要由每个配置文件单独更新的模块声明了一些属性。让我们看看下面的配置,

<profiles>
    <profile>
         <id>profile1</id>
         <properties>
              <owner>ABC</owner>
         </properties>
         <modules>
            <module>module1</module>
            <module>module2</module>
         </modules>
     <profile>
     <profile>
         <id>profile2</id>
         <properties>
              <owner>XYZ</owner>
         </properties>
         <modules>
            <module>module3</module>
            <module>module4</module>
         </modules>
     <profile>
</profiles>

说到重点,profile1 属性 ABC 必须在 module1 和 module2 中更新,profile2 属性 XYZ 必须在 module3 和 module4 中更新。在构建应用程序时,我尝试了以下所有命令。

mvn clean install -Pprofile1,profile2
mvn clean install -P profile1,profile2

当我使用上述命令构建项目时,XYZ 在所有模块中都有更新。同样,当我使用以下命令时,ABC 正在所有 4 个模块中更新。

mvn clean install -Pprofile2,profile1
mvn clean install -P profile2,profile1

我的要求是仅在模块 1 和模块 2 中更新 ABC,在模块 3 和模块 4 中更新 XYZ。你能告诉我,有什么办法可以解决这个问题吗?

注意:我什至尝试过以下命令, mvn clean install -Pprofile1 -Pprofile2 构建因目标或生命周期问题而失败。

-谢谢

您的聚合器中的 属性 是独一无二的。因此,根据您的配置,一个配置文件会覆盖另一个配置文件。

您的解决方案是从个人资料中删除 属性:

聚合器:

<profiles>
  <profile>
     <id>profile1</id>
     <modules>
        <module>module1</module>
        <module>module2</module>
     </modules>
 <profile>
 <profile>
     <id>profile2</id>
     <modules>
        <module>module3</module>
        <module>module4</module>
     </modules>
  <profile>
</profiles>

模块 1 和 2(无配置文件):

 <properties>
      <owner>ABC</owner>
 </properties>

模块 3 和 4(无配置文件):

 <properties>
      <owner>XYZ</owner>
 </properties>

因为在您的情况下,每个模块的属性始终相同。

但是

正如 khmarbaise 已经写的那样,您对个人资料的使用似乎有些奇怪...