java.version和maven.compiler.target之间的区别

5

在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个回答

3
这两种配置Java版本的方法会产生完全相同的结果。
1) 这是标准的Maven方式来确定源和目标Java版本的方法:
<properties>
    <maven.compiler.source>7</maven.compiler.source>
    <maven.compiler.target>7</maven.compiler.target> 
</properties>

2) 尽管这是一个Spring Boot的特定性:

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

这是一个快捷属性,可以不声明源版本和目标版本,因为它们的值相同。
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应用程序,你可以选择其中之一。
否则,只能使用第二个。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接