java.version 和 maven.compiler.target 之间的区别 [重复]

Posted

技术标签:

【中文标题】java.version 和 maven.compiler.target 之间的区别 [重复]【英文标题】:Difference between java.version and maven.compiler.target [duplicate] 【发布时间】:2018-02-10 18:19:36 【问题描述】:

在 maven 属性中指定 java 版本时可能有两个不同的属性:

<properties>
    <java.version>7</java.version>
</properties>

<properties>
    <maven.compiler.source>7</maven.compiler.source>
    <maven.compiler.target>7</maven.compiler.target> 
</properties>

有什么区别,什么时候用什么?

【问题讨论】:

【参考方案1】:

这两种配置 Java 版本的方法产生完全相同的结果。

1) 这是 standard Maven way 用于评估源和目标 Java 版本:

<properties>
    <maven.compiler.source>7</maven.compiler.source>
    <maven.compiler.target>7</maven.compiler.target> 
</properties>

2) 虽然那是Spring Boot specificity:

<properties>
    <java.version>7</java.version>
</properties>

不声明源版本和目标版本是一种快捷方式属性,因为它们具有相同的值。

从the spring-boot-starter-parent pom可以看出java.version是用来赋值maven.compiler.sourcemaven.compiler.target的:

<properties>
    <java.version>1.8</java.version>
    .... 
    <maven.compiler.source>$java.version</maven.compiler.source>
    <maven.compiler.target>$java.version</maven.compiler.target>
</properties>

这种方式可能是有意义的,因为大多数时候,源版本和目标版本都是这种情况(但这不是标准方式)。


如果您开发 Spring Boot 应用程序,您可以选择其中一个。 否则,只应使用第二个。

【讨论】:

以上是关于java.version 和 maven.compiler.target 之间的区别 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Maven项目提示:源值1.5已经过时,将在未来发行版中删除

IDEA配置Scala编写Spark程序

1.5 中不支持 lambda 表达 java

scala log4j 漏洞

运行maven pom.xml文件后编译环境变为jdk1.5

java -version和javac -version不同原因及修改方法