不支持发行版1.8

rad*_*lan 9 java maven java-8 maven-compiler-plugin

我有一个使用Java 8的项目.

到目前为止,在pom中我们将源版本和目标版本指定为1.8:

<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
Run Code Online (Sandbox Code Playgroud)

我们想利用Java 9+的"-release"选项并添加以下内容:

<maven.compiler.release>1.8</maven.compiler.release>
Run Code Online (Sandbox Code Playgroud)

但现在我们收到以下错误:

Fatal error compiling: release version 1.8 not supported
Run Code Online (Sandbox Code Playgroud)

我们使用maven 3.5.3,版本3.8.0和Java 10中的maven-compiler-plugin来编译项目.

这有什么不对?

Nam*_*man 8

这应该工作

<maven.compiler.release>8</maven.compiler.release>
Run Code Online (Sandbox Code Playgroud)

因为该<release>属性仅适用于主要版本的版本.

通过这种方式假设这是在实际的编译器 - 插件配置中使用的参数有点像:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <release>${maven.compiler.release}</release>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

  • 是的,你是对的!有点不一致,`source`和`target`允许1.8和8,但`只发布'允许8 ... (2认同)
  • 关于您提到的 maven-compiler-plugin 配置:是的,但间接的。上述属性仅指定为属性。我们没有在 maven-compiler-plugin 的配置块中明确提到这些属性,因为这些属性是自动读取的,不需要像您的示例中那样显式声明。 (2认同)