maven с JDK11: javac: недействительный флаг: --release - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь настроить простой проект maven с java 11. Поскольку я хочу, чтобы JAVA_HOME была версией 8, я использую maven-toolchains-plugin, чтобы maven использовал jdk11 для этого проекта.

Хотя maven успешно находит соответствующий набор инструментов для jdk-11.0.1, я продолжаю получать «javac: invalid flag: --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>

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Как я выяснил, конфигурация просто отличная.Проблема заключалась в том, что jdkHome в toolchains.xml указывал на направление \jdk-11.0.1\bin вместо \jdk-11.0.1 напрямую ..... Использование <jdkHome>C:\Program Files\Java\jdk-11.0.1</jdkHome> решает проблему ..

0 голосов
/ 01 декабря 2018

Изменение версии jdk должно решить проблему в основном.Замените

<version>1.11</version>

на

<version>11</version>

Убедитесь, что ваш maven настроен на JDK-11 с помощью команды mvn -version и подтвердил версию 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>

Вот образец pom.xml, упомянутый выше.

...