繁体   English   中英

为什么Maven的编译器默认为1.5版?

[英]Why is Maven's compiler default to version 1.5?

如Maven 文档中所述

目前,默认源设置为1.5,默认目标设置为1.5,与运行Maven的JDK无关。

我知道我可以为单个项目更改此设置,但是我不明白为什么选择忽略JDK。 当然,检测版本并将其用于源设置会更直观吗?

为了简化配置,他们选择了合理的默认设置。 这样,任何想要使用该默认设置的项目都不会包含该配置。 他们选择了他们认为最常见的值,并使其成为默认值。

现在,已经过去了很多年。 几乎没有人想要再使用该默认值。 现在,我们所有人都必须显式设置该值。

为什么不默认使用JDK版本? 因为那样升级JDK可能会破坏现有项目。

为什么不将默认值更改为当前大多数项目使用的默认值? 因为那样可能会破坏任何使用默认设置的现有项目。

这里有几件事情要考虑。

短语“目前”表明,将来可以改进或增强用于选择默认值的逻辑。 但是我不会屏住呼吸。

正是出于Rob指出的原因,选择(或更糟糕的是,更改)默认值始终是一件棘手的事情。 您是否安抚了抱怨者并给其他所有人带来了很多麻烦? 还是让睡狗撒谎并保持过时的默认设置? 两种选择都不是理想的,因此“不采取任何行动”会取胜-两种弊端中的较小者。 进行更改的风险大于收益。

khmarbaise可能意味着Maven的默认值和您使用的JDK之间没有任何关系。 是正确的还是不正确的,在任何情况下,Maven都无法做任何事情。 就Maven所知,您的计算机上可能有五个不同的JDK。 它无法知道您正在使用哪些项目以及哪些项目。

将默认值更新为1.8,您可能会拥有与更改默认值一样多的无法使用默认值的人。 (假设会有一个合理的假设,但是仍然是一个假设。)无论默认值是多少,有人在某个地方都必须使用自定义设置。 那么,为什么要担心哪一组人呢? 默认值是关于便利性。 而已。

目标是提供一致的行为。 更改默认设置(无论是经常更改还是不更改)都违背了这一目标。 知道Maven提供的一致性很可能值得持久的抱怨,因为人们不愿意添加几行XML来定制项目的JDK级别。

Java注释和泛型在1.5版中引入。 将级别设置为更低将破坏已编写的Java代码的很大一部分。 尽管在版本1.6和1.7中引入了功能,但是它们并未像泛型和注释那样广泛地使用。 但是,有许多J2EE工件需要1.6。 绝大多数代码都适用于1.5,因此被视为合理的默认值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM