【问题标题】:Maven Compiler: Check syntax for Java versionMaven 编译器:检查 Java 版本的语法
【发布时间】:2022-01-23 17:07:23
【问题描述】:

我有一个理解问题:

假设我有 Java 代码并在那里使用 Java 11 语法(例如,来自 String 类的 isBlank())。

为了编译,我使用 maven-compiler-plugin (3.8.1) 和属性 maven.compiler.sourcemaven.compiler.target 每个设置为值 1.8

如果我编译 mvn clean (java -version = openjdk version "11.0.3" 2019-04-16) 它工作正常。

我给maven-compiler-plugin 的java 版本是否只是提供信息?我怎样才能确保我得到一个真正适用于 Java 8 的工件。我是否需要安装 JDK 8(即java -version = 1.8)?

非常感谢!

【问题讨论】:

  • 如果您打算在 java 8 环境中工作,为什么要使用 java 11 代码?
  • 如果使用JDK9+,你应该使用<maven.compiler.release>8</maven.compiler.release>...@Stultuske 为什么不...它更容易...并且已经显示代码是否可以使用JDK11 编译..
  • @Stultuske:我使用 Java 11,但忘记更改属性。所以我想知道为什么会这样。
  • @khmarbaise 谢谢,这意味着只有从 1.9 开始,您还可以进行语法检查。
  • 否...语法检查与此无关... 源代码控制语法,但不限制 jdk 中的方法(早期使用动物嗅探器检查).. .today JDK9+ 使用发布选项..更容易和更可靠...所以使用 JDK11 或 JDK17 构建您的应用程序并通过maven.compiler.release 属性控制目标(生成的类文件的版本)...

标签: java maven


【解决方案1】:

maven.compiler.source 控制可以使用或不可以使用的语法,但它不限制可以编译代码的 JDK 中的哪些方法。为此,您可以使用 release 属性。例如:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <release>8</release>
    </configuration>
</plugin>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 2018-10-09
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2012-03-31
    相关资源
    最近更新 更多