#java #maven #toolchain #maven-exec-plugin
#java #maven #maven-exec-plugin #maven-toolchains-плагин
Вопрос:
Я унаследовал приложение, которое компилируется и запускается только на Java 1.8. Поскольку я не хочу делать Java 1.8 основной jvm на моей машине, я почувствовал, что лучший способ справиться с этим — использовать цепочки инструментов Maven. Настройка плагина maven-compiler-plugin была довольно простой, но я также хочу добавить возможность запуска службы через Maven, чтобы воспользоваться преимуществами набора инструментов, который я настроил для 1.8.
Проблема в том, что я, похоже, не могу заставить exec-maven-plugin использовать toolchain как задокументировано. Согласно документации, я бы подумал, что exec-maven-plugin будет использовать maven-toolchains-plugin по мере необходимости. Однако для того, чтобы exec:exec
использовать правильный набор инструментов, я должен использовать:
mvn toolchains:toolchain exec:exec
Это работает, но документация наводит меня на мысль, что набор инструментов будет настроен автоматически без необходимости выполнения toolchains:toolchain
цели.
pom.xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>toolchain</goal>
</goals>
</execution>
</executions>
<configuration>
<toolchains>
<jdk>
<version>1.8</version>
</jdk>
</toolchains>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<executable>java</executable>
<arguments>
<argument>-classpath</argument>
<classpath></classpath>
<argument>com.my.Main</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
toolchains.xml
<?xml version="1.0" encoding="UTF8"?>
<toolchains>
<toolchain>
<type>jdk</type>
<provides>
<id>1.8</id>
<version>1.8</version>
</provides>
<configuration>
<jdkHome>/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home</jdkHome>
</configuration>
</toolchain>
</toolchains>
Дополнительное примечание: я также попытался настроить exec-maven-plugin для запуска exec:java
со следующей конфигурацией:
<configuration>
<mainClass>com.my.Main</mainClass>
</configuration>
Однако это не работает, даже с mvn toolchains:toolchain exec:java
.
Есть ли способ настроить это так, чтобы мне нужно было только запускать mvn exec:exec
или mvn exec:java
?
Ответ №1:
Я думаю, ответ заключается в том, что вы должны убедиться, что сам toolchains
плагин является частью вашей сборки. Или это то, что, похоже, говорится в соответствующей документации. (Я вижу, что у вас это есть; я говорю, что да, это необходимо.)
Комментарии:
1. Не тот ответ, который я хотел, но, похоже, это правильный ответ. 🙂