Может ли профиль maven наследовать от другого профиля maven? - PullRequest
14 голосов
/ 10 ноября 2011

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

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

Ответы [ 2 ]

17 голосов
/ 10 ноября 2011

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

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

2 голосов
/ 03 августа 2016

Строго говоря, профили не наследуются, так как профили, определенные в родительском pom, недоступны в дочерних poms согласно документации 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 -PgrationTest' из дочернего каталога pom, он примет информацию о плагине, указанную в A.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...