web-dev-qa-db-fra.com

maven avec JDK11: javac: indicateur invalide: --release

J'essaie de mettre en place un projet maven simple avec Java 11. Comme je veux garder Java_HOME en version 8, j'utilise maven-toolchains-plugin pour que maven utilise jdk11 pour ce projet.

Alors que maven trouve avec succès une chaîne d'outils correspondante pour jdk-11.0.1, je reçois toujours "javac: flag invalide: --release". Qu'est-ce que je fais mal?

Voici les configurations des plugins:

 <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>

La chaîne d'outils est définie comme:

 <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

Changer la version jdk devrait résoudre le problème principalement. Remplacer

<version>1.11</version>

avec

<version>11</version>

Assurez-vous cependant que votre maven est configuré avec JDK-11 en utilisant la commande mvn -version et en confirmant la Java ici. Vous pouvez également vérifier la toolchains.xml JDK également configuré.


Dans le cas où vous essayez de compiler en utilisant différentes versions du compilateur, vous devez vous assurer que les exécutions sous maven-compiler-plugin comme:

<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>

Voici le exemple pom.xml mentionné ci-dessus.

1
Naman