Как сделать исполнение плагина Maven необязательным (опциональным)?
Я написал программу, в процессе сборки которой используется плагин maven-toolchains-plugin. Этот плагин подгружает файл ~/.m2/toolchains.xml и на основании него автоматически выбирает подходящую версию jdk, что полезно, если, например, я работаю в одной системе с несколькими проектами, в которых используются разные версии jdk:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<version>${maven-toolchains-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>toolchain</goal>
</goals>
</execution>
</executions>
<configuration>
<toolchains>
<jdk>
<version>${java.version}</version>
</jdk>
</toolchains>
</configuration>
</plugin>
</plugins>
Как я выше написал, данный плагин требует наличие файла toolchains.xml в директории .m2. Каким образом можно сделать исполнение данного плагина необязательным? Если, например, на другой машине, где я хочу собрать проект, отсутствует данный файл, и я не хочу его там создавать?
Ответы (1 шт):
Я нашёл решение. Следует использовать профили:
<build>
<plugins>
<!-- Plugin for simple profiles activating -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-help-plugin</artifactId>
<version>${maven-help-plugin.version}</version>
<executions>
<execution>
<id>show-profiles</id>
<phase>compile</phase>
<goals>
<goal>active-profiles</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<!-- Profile for using with toolchain -->
<profile>
<id>local</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<version>${maven-toolchains-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>toolchain</goal>
</goals>
</execution>
</executions>
<configuration>
<toolchains>
<jdk>
<version>${java.version}</version>
</jdk>
</toolchains>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Так как я использую плагин Make, то для меня становится всё ещё проще. Я просто делаю в Makefile следующие команды:
build:
mvn clean package
build_local:
mvn clean package -Plocal
Далее, если мы собираем проект на машине, где установлен и настроен toolchain, то выполняем следующую команду:
make build_local
А если мы хотим собрать проект на машине, где этот плагин не подключен, то мы можем просто сделать так (следует, однако, держать подходящую версию JDK в переменных окружения):
make build