exec-maven-plugin:我可以 运行 exec:exec 目标而不先 运行 宁 toolchains:toolchain 目标吗?
exec-maven-plugin: Can I run exec:exec goal without first running the toolchains:toolchain goal?
我继承了一个仅在 Java 1.8 中编译和 运行s 的应用程序。因为我不想让 Java 1.8 成为我机器上的主要 jvm,所以我觉得最好的管理方法是通过 Maven 工具链。配置 maven-compiler-plugin 非常简单,但我还想添加通过 Maven 执行服务的功能,以便利用我为 1.8 配置的工具链。
挑战在于我似乎无法让 exec-maven-plugin 像文档中那样使用工具链。根据文档,我认为 exec-maven-plugin 会根据需要使用 maven-toolchains-plugin。但是,为了让 exec:exec
使用正确的工具链,我必须使用:
mvn toolchains:toolchain exec:exec
这可行,但 documentation 让我认为工具链会自动配置,无需我执行 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:java
上将 exec-maven-plugin 配置为 运行:
<configuration>
<mainClass>com.my.Main</mainClass>
</configuration>
但是这不起作用,即使 mvn toolchains:toolchain exec:java
。
有没有办法配置它,这样我只需要 运行 mvn exec:exec
或 mvn exec:java
?
我认为答案是您必须确保 toolchains
插件本身是您构建的一部分。或者这就是 the relevant documentation seems to say。 (我在上面看到你有那个;我的意思是是的,这是必需的。)
我继承了一个仅在 Java 1.8 中编译和 运行s 的应用程序。因为我不想让 Java 1.8 成为我机器上的主要 jvm,所以我觉得最好的管理方法是通过 Maven 工具链。配置 maven-compiler-plugin 非常简单,但我还想添加通过 Maven 执行服务的功能,以便利用我为 1.8 配置的工具链。
挑战在于我似乎无法让 exec-maven-plugin 像文档中那样使用工具链。根据文档,我认为 exec-maven-plugin 会根据需要使用 maven-toolchains-plugin。但是,为了让 exec:exec
使用正确的工具链,我必须使用:
mvn toolchains:toolchain exec:exec
这可行,但 documentation 让我认为工具链会自动配置,无需我执行 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:java
上将 exec-maven-plugin 配置为 运行:
<configuration>
<mainClass>com.my.Main</mainClass>
</configuration>
但是这不起作用,即使 mvn toolchains:toolchain exec:java
。
有没有办法配置它,这样我只需要 运行 mvn exec:exec
或 mvn exec:java
?
我认为答案是您必须确保 toolchains
插件本身是您构建的一部分。或者这就是 the relevant documentation seems to say。 (我在上面看到你有那个;我的意思是是的,这是必需的。)