一个配置文件属性覆盖了maven中的另一个配置文件属性?

时间:2017-12-28 06:19:22

标签: maven maven-profiles maven-module

我的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

我的要求是仅在module1和module2中更新ABC,在module3和module4中更新XYZ。能告诉我,任何可以解决这个问题的解决方案。

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

-Thanks

1 个答案:

答案 0 :(得分:1)

聚合器中的属性是唯一的。因此,对于您的配置,一个配置文件会覆盖另一个配置文件。

您的案例中的解决方案是将该属性从配置文件中删除:

聚合:

Search icon

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

<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>

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

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

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

然而

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