带有JDK11:javac:invalid标志的maven:--release



我正试图用java 11建立一个简单的maven项目。由于我想保持JAVA_HOME的版本为8,所以我使用maven-toolchains-plugin让maven在这个项目中使用jdk11。

虽然maven成功地为jdk-11.0.1找到了一个匹配的工具链,但我一直得到"javac:invalidflag:--release"。我做错了什么?

以下是插件配置:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<goals>
<goal>toolchain</goal>
</goals>
</execution>
</executions>
<configuration>
<toolchains>
<jdk>
<version>11</version>
</jdk>
</toolchains>
</configuration>
</plugin>

工具链定义为:

<toolchain>
<type>jdk</type>
<provides>
<version>11</version>
<id>JavaSE-1.11</id>
</provides>
<configuration>
<jdkHome>C:Program FilesJavajdk-11.0.1bin</jdkHome>
</configuration>
<toolchain>

正如我所发现的,配置很好。问题是toolchains.xml中的jdkHome直接指向jdk-11.0.1bin方向而不是jdk-11.0.1。。。。。使用<jdkHome>C:Program FilesJavajdk-11.0.1</jdkHome>解决了这个问题。。

更改jdk版本应该可以在很大程度上解决问题。更换

<version>1.11</version>

带有

<version>11</version>

不过,请确保使用命令mvn -version将您的maven配置为JDK-11,并在那里确认Java版本。您还可以验证配置的toolchains.xmlJDK。


如果您试图使用不同版本的编译器进行编译,则需要确保在maven-compiler-plugin下执行为:

<executions>
<execution>
<id>java11</id>
<phase>none</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<release>11</release>
<jdkToolchain>
<version>11</version>
</jdkToolchain>
<compileSourceRoots>
<compileSourceRoot>${project.basedir}/src/main/java11</compileSourceRoot>
</compileSourceRoots>
<outputDirectory>${project.build.outputDirectory}/META-INF/versions/11</outputDirectory>
</configuration>
</execution>
</executions>

以下是针对上述内容而参考的样本CCD_ 10。

最新更新