Может ли профиль maven наследовать от другого профиля maven?

У меня два профиля, которые почти идентичны. Вместо того, чтобы дублировать конфигурацию в каждом, я хотел бы, чтобы один профиль "наследовал" от другого, но я не вижу очевидного способа сделать это, используя maven 3.

Возможно ли наследование профиля в maven?

Ответы

Ответ 1

Нет, профили не могут быть унаследованы.

Тем не менее, вы можете иметь несколько активных профилей, которые могут позволить вам выполнить примерно одно и то же, разложив общие элементы в двух профилях в третий профиль, который вы активируете, когда вы активируете один из двух других профилей.

Ответ 2

Строго говоря, профили не наследуются в том, что профили, заданные в родительском помпе, недоступны в детских помпах, согласно документации maven. ОДНАКО, свойства и плагины сборки (а не pluginManagement), которые указаны в родительских позах, могут активироваться и, следовательно, изменять среду сборки для детских помес. Например, если у меня есть родительский pom A, который имеет следующий раздел профилей:

  </profiles>
      <profile>
            <id>integrationTest</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <parallel>none</parallel>
                            <excludes>
                                <exclude>**/*Test.java</exclude>
                            </excludes>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <configuration>
                            <includes
                                <include>**/*IT.java</include>
                            </includes>
                            <!-- need to exclude nothing as it is possible that some by default some tests are excluded and we need to override that -->
                            <excludes>
                                <exclude>none</exclude>
                            </excludes>
                            <parallel>none</parallel>
                        </configuration>
                    </plugin>            
                </plugins>
            </build>
        </profile>
   </profiles>

И затем дочерний pom B, у которого нет защищенного плагина, настроенного в сборке по умолчанию, но наследуемого от A pom через родительский тег, и затем я запускаю 'mvn clean install -P integrationTest' из каталога дочернего pom, он будет введите информацию плагина, указанную в A.