简短的回答:
正确的方法是对不同的 Java 版本使用以下值:<java.version>
- Java 8 : 1.8 或 8
- 爪哇 9 : 9
- 爪哇 10 : 10
- 爪哇 11 : 11
- 爪哇 12 : 12
- .....
- .....
- 爪哇 16 : 16
- 爪哇 17 : 17
所以对于Java 11,它应该是:
<properties>
<java.version>11</java.version>
</properties>
但是我不确定Java 11是否是“1.11”(似乎不太可能),并且在使用maven-compiler-plugin时,我看到它被指定为“11”,但是我没有使用编译器插件。
实际上,在最后它仍然用于编译。Springboot 只是配置一个属性,使得通过更改此值,您可以隐式地将 's 和 更改为与中指定的值相同的值:maven-compiler-plugin
<java.version>
maven-compiler-plugin
<source/>
<target/>
<java.version>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>11</source> <!-- same as <java.version> -->
<target>11</target> <!-- same as <java.version> -->
</configuration>
</plugin>
详细答案:
似乎你想要细节来说服你。
这是因为每个 Spring boot 项目都会扩展父 pom,其定义如下:spring-boot-starter-parent
<java.version>
<properties>
<java.version>1.8</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
来自 maven-compiler-plugin 文档,并且是 和 config 参数的用户属性。由于用户属性的行为,将这两个属性设置为意味着设置以下内容:maven.compiler.source
maven.compiler.target
<source>
<target>
11
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>11</source> <!-- maven.compiler.source -->
<target>11</target> <!-- maven.compiler.target -->
</configuration>
</plugin>
再次从文档中,并且是 Java 编译器的和参数()。然后,从javac文档中,我们可以看到这两个参数被允许具有以下值:maven-compiler-plugin
<source>
<target>
-source
-target
javac
- 1.6 : Java SE 6 中没有引入任何语言更改。但是,源文件中的编码错误现在报告为错误,而不是像早期版本的 Java 平台标准版中那样报告为警告。
- 6 : 1.6的同义词。
- 1.7 : 编译器接受具有 Java SE 7 中引入的功能的代码。
- 7 : 1.7的同义词。
- 1.8 : 编译器接受具有 Java SE 8 中引入的功能的代码。
- 8 : 同义词 1.8.
- 9 : 编译器接受具有 Java SE 9 中引入的功能的代码。
- 10 : 编译器接受具有 Java SE 10 中引入的功能的代码。
- 11 : 编译器接受具有 Java SE 11 中引入的功能的代码。
- 12 : 编译器接受具有 Java SE 12 中引入的功能的代码。
因此,对于 Java 11 应设置为 。<java.version>
11