У меня есть в POM что-то вроде этого:
<profile>
<id>profile1</id>
<build>
<resources>
....
</resources>
<plugins>
<plugin>
<configuration>
....plugin1 configuration.....
</configuration>
</plugin>
<plugin>
<configuration>
....plugin2 configuration.....
<configEntry1></configEntry1>
<configEntry2></configEntry1>
</configuration>
</plugin>
</plugins>
</build>
</profile>
В профиле мало плагинов, у этих плагинов есть конфигурации и исполнения. В зависимости от работы Дженкинса (я хочу создать десктопное Java-приложение для Win, Unix, Mac OS) конфигурация плагина может иметь небольшие изменения. Например, если я запускаю задание для Mac, во второй конфигурации плагина не должно быть configEntry2
.
Мне нужно создать профиль для каждой работы и скопировать 99% конфигурации XML профиля. Есть ли способ повторно использовать аналогичные детали?
Существует ли наследование профилей? Например, profile2
, profile3
могут наследовать все плагины, их выполнение и конфигурацию от profile1
, но я переопределю конфигурацию для одного плагина.
Или я могу установить динамическую конфигурацию в зависимости от свойства? Например: <configEntry2 ifTrue="${property.name}"></configEntry1>
. Не надо
Есть ли что-то подобное?
Спасибо за ответы.
ИЗМЕНИТЬ – добавить конкретный пример:
Профиль 1:
<profile>
<id>profile1</id>
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>8.8.3</version>
<configuration>
<identifier>fxApplication</identifier>
<appName>AppName</appName>
<mainClass>package.Main</mainClass>
<nativeReleaseVersion>${jfx.version}</nativeReleaseVersion>
<jfxMainAppJarName>jarName.jar</jfxMainAppJarName>
<deployDir>${basedir}/deploy</deployDir>
<updateExistingJar>true</updateExistingJar>
<manifestAttributes>
<JavaFX-Feature-Proxy>None</JavaFX-Feature-Proxy>
<Implementation-Vendor>vendor</Implementation-Vendor>
<Implementation-Title>Title</Implementation-Title>
<Main-Class>package.Main</Main-Class>
<JavaFX-Version>2.0</JavaFX-Version>
<JavaFX-Application-Class>package.Main</JavaFX-Application-Class>
<Created-By>Company</Created-By>
</manifestAttributes>
<jvmArgs>
<jvmArg>-XX:-UseParallelGC -XX:+HeapDumpOnOutOfMemoryError -Xmx8G -XX:+UseG1GC -XX:InitiatingHeapOccupancyPercent=10 -XX:MaxHeapFreeRatio=40</jvmArg>-->
</jvmArgs>
<additionalAppResources>${basedir}/target/jfx/externalResources</additionalAppResources>
</configuration>
<executions>
<execution>
<id>create-jfxjar</id>
<phase>package</phase>
<goals>
<goal>build-jar</goal>
</goals>
</execution>
<execution>
<id>create-native</id>
<phase>package</phase>
<goals>
<goal>build-native</goal>
</goals>
</execution>
</executions>
</plugin>
</profile>
и профиль2:
<profile>
<id>profile2</id>
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>8.8.3</version>
<configuration>
<identifier>fxApplication</identifier>
<appName>AppName</appName>
<mainClass>package.Main</mainClass>
<nativeReleaseVersion>${jfx.version}</nativeReleaseVersion>
<jfxMainAppJarName>jarName.jar</jfxMainAppJarName>
<deployDir>${basedir}/deploy</deployDir>
<updateExistingJar>true</updateExistingJar>
<manifestAttributes>
<JavaFX-Feature-Proxy>None</JavaFX-Feature-Proxy>
<Implementation-Vendor>vendor</Implementation-Vendor>
<Implementation-Title>Title</Implementation-Title>
<Main-Class>package.Main</Main-Class>
<JavaFX-Version>2.0</JavaFX-Version>
<JavaFX-Application-Class>package.Main</JavaFX-Application-Class>
<Created-By>Company</Created-By>
</manifestAttributes>
<additionalAppResources>${basedir}/target/jfx/externalResources</additionalAppResources>
</configuration>
<executions>
<execution>
<id>create-jfxjar</id>
<phase>package</phase>
<goals>
<goal>build-jar</goal>
</goals>
</execution>
<execution>
<id>create-native</id>
<phase>package</phase>
<goals>
<goal>build-native</goal>
</goals>
</execution>
</executions>
</plugin>
</profile>
разница только в том, что в профиле2 нет <jvmArgs>
Как я могу повторно использовать 99% скрипта xml?