2

我对 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 Build 因目标或生命周期问题而失败。

-谢谢

4

1 回答 1

1

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

在您的情况下,解决方案是将属性从配置文件中取出:

聚合器:

<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 已经写的那样,您对个人资料的使用似乎有些奇怪......

于 2018-01-07T20:42:19.713 回答