Java 11.を使用して単純なmavenプロジェクトをセットアップしようとしています。Java_HOMEをバージョン8にしたいので、maven-toolchains-plugin
このプロジェクトでmavenがjdk11を使用するようにします。
Mavenはjdk-11.0.1に一致するツールチェーンを正常に検出しますが、「javac:無効なフラグ:--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 Files\Java\jdk-11.0.1\bin</jdkHome>
</configuration>
<toolchain>
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>
これは、上記で参照された sample pom.xml
です。