Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java exec-maven插件:我可以运行exec:exec-goal而不首先运行toolschains:toolschain-goal吗?_Java_Maven_Toolchain_Maven Exec Plugin - Fatal编程技术网

Java exec-maven插件:我可以运行exec:exec-goal而不首先运行toolschains:toolschain-goal吗?

Java exec-maven插件:我可以运行exec:exec-goal而不首先运行toolschains:toolschain-goal吗?,java,maven,toolchain,maven-exec-plugin,Java,Maven,Toolchain,Maven Exec Plugin,我继承了一个只在Java1.8中编译和运行的应用程序。因为我不想让Java1.8成为我机器上的主要jvm,所以我觉得最好的管理方法是通过Maven工具链。配置maven编译器插件非常简单,但我还想添加通过maven执行服务的功能,以便利用我为1.8配置的工具链 挑战在于,我似乎无法让execmaven插件使用文档中的工具链。根据文档,我认为execmaven插件会根据需要使用maven工具链插件。但是,为了让exec:exec使用正确的工具链,我必须使用: mvn工具链:工具链exec:exec

我继承了一个只在Java1.8中编译和运行的应用程序。因为我不想让Java1.8成为我机器上的主要jvm,所以我觉得最好的管理方法是通过Maven工具链。配置maven编译器插件非常简单,但我还想添加通过maven执行服务的功能,以便利用我为1.8配置的工具链

挑战在于,我似乎无法让execmaven插件使用文档中的工具链。根据文档,我认为execmaven插件会根据需要使用maven工具链插件。但是,为了让
exec:exec
使用正确的工具链,我必须使用:

mvn工具链:工具链exec:exec

这是可行的,但这让我想到工具链将自动配置,而无需执行
toolschains:toolschain
目标

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>
但是,即使使用
mvn toolschains:toolschain exec:java
,这也不起作用


有没有一种方法可以配置它,这样我只需要运行
mvn exec:exec
,或者
mvn exec:java

我认为答案是您必须确保
工具链
插件本身是构建的一部分。或者就是这样。(我在上面看到你有这个答案;我要说的是肯定的,这是必须的。)

不是我想要的答案,但它似乎是正确的答案
<?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>
<configuration>
  <mainClass>com.my.Main</mainClass>
</configuration>