我继承了一个只在Java1.8中编译和运行的应用程序。因为我不想让Java 1.8成为我机器上的主要jvm,所以我觉得管理它的最好方法是通过Maven工具链。配置Maven编译器插件非常简单,但我还想添加通过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-maven-plugin在exec:java上运行:
<configuration>
<mainClass>com.my.Main</mainClass>
</configuration>然而,这不起作用,甚至在mvn toolchains:toolchain exec:java中也不起作用。
有没有办法将其配置为只需运行mvn exec:exec或mvn exec:java
发布于 2020-10-01 05:07:03
我认为答案是你必须确保toolchains插件本身是你构建的一部分。或者这就是the relevant documentation seems to say。(我在上面看到了这一点;我要说的是是的,这是必需的。)
https://stackoverflow.com/questions/64142374
复制相似问题