我正试图用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.xml
JDK。
如果您试图使用不同版本的编译器进行编译,则需要确保在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。