Как сделать исполнение плагина 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 шт):

Автор решения: Zhenyria

Я нашёл решение. Следует использовать профили:

<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
→ Ссылка