有两个概念:
- jdk version
- class version
其中class version是编译打Jar包后字节码文件的版本,有如下对应关系:
- Java release > Class version
- 8 > 52
- 9 > 53
- 10 > 54
- 11 > 55
- 12 > 56
- 13 > 57
- 14 > 58
- 15 > 59
- 16 > 60
- 17 > 61
- 18 > 62
- 19 > 63
- 21 > 65
所以假设你的Jar使用jdk21发布的,然后你在jdk8的runtime导入,编译时就会报错;反之由于向下兼容,你在jdk21 runtime导入jdk8编译的Jar不会出错。
class version只受maven配置影响,和git仓库配置的jdk、本地jdk版本都无关。只需要在这个配置编译输出版本即可。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.2</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>