this вопрос: Не удается найти информацию о том, как создается объединение нескольких (активных) профилей maven при условии, что они являются , а не конфликтующими.Как разрешаются конфликтующие конфигурации, если активировано несколько профилей?
Рассмотрите следующий пример: Я хочу контролировать, как мои тестовые примеры выполняются с помощью maven-surefire-plugin. Сначала мне нужно настроить две разные среды (jenkins-CI-server) и локальные. Во-вторых, я хочу включить запуск различных наборов тестов. я бы четыре профиля:
env_jenkins
для работы на Дженкинсenv_local
для работы на местномtestset_A
для запуска некоторых тестовtestset_B
для выполнения некоторых других тестов
Примечания что для всех этих профилей мне нужно определить конфигурацию плагина для maven-surefire-plugin. (см. Ниже конкретную xml-конфигурацию)
Затем я хотел бы объединить профили для запуска - например, - testet A на jenkins.
Мои вопросы:
- поддерживается ли такое поведение мавена?
- На какой стадии происходит переопределение, указанное в the related question? Изменена ли вся конфигурация плагина (-> мой пример не работает). Или только реально конфликтующие части (-> мой пример будет работать)?
- Является ли поведение переопределения зависящим от плагина или является ли оно единообразным среди всех плагинов maven?
Пример ПОМ:
<profiles>
<!-- handle system configurations (e.g. one for jenkins environment, one for local) -->
<profile>
<id>env_jenkins</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<arquillian.launch>jbossas-managed</arquillian.launch>
<jbossHttpPortOverride>8080</jbossHttpPortOverride>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>env_local</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<arquillian.launch>jbossas-managed-jenkins</arquillian.launch>
<jbossHttpPortOverride>${jboss.http.port}</jbossHttpPortOverride>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- define different test sets -->
<profile>
<id>testset_A</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>TestA1.java</include>
<include>TestA2.java</include>
<include>TestA3.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>testset_B</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>TestB1.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Независимо от того, что происходит на самом деле, почему вы пытаетесь это сделать? Вероятно, это можно решить без какого-либо профиля. Посмотрите на ['includesFile'] (http://maven.apache.org/components/surefire/maven-surefire-plugin/test-mojo.html#includesFile), чтобы указать, например, динамическое включение. Затем вы можете определить только два свойства для 'jbossHttpPortOverride' и' arquillian.launch', возможно, в профиле. – Tunaki
@ Тунаки: спасибо за предложения для этого конкретного примера. Однако общая проблема - это часть maven, которую я не понимаю с тех пор. Поэтому я буду держать вопрос открытым. – fab
Я ожидаю, что конфигурация наследуется между профилями, а в случае повторяющихся свойств - последний, объявленный в POM. Это может измениться с родительским/дочерним процессом, потому что вы можете объявить плагин ' false ', чтобы ребенок не наследовал родительскую конфигурацию. –
Tunaki