web-dev-qa-db-ja.com

JDK11を使用したmaven:javac:無効なフラグ:--release

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>
5
Hengrui Jiang

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 です。

1
Naman