Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Maven';s编译器的默认版本为1.5?_Java_Maven - Fatal编程技术网

Java 为什么Maven';s编译器的默认版本为1.5?

Java 为什么Maven';s编译器的默认版本为1.5?,java,maven,Java,Maven,正如Maven的报告中所述 目前,默认源设置为1.5,默认目标设置为1.5,与运行Maven的JDK无关 我知道我可以为单个项目更改此选项,但我不理解为什么选择忽略JDK。当然,检测版本并将其用于源设置更直观?为了使配置更容易,他们选择了一个合理的默认设置。这允许任何想要使用该默认设置的项目不包括该配置。他们选择了他们认为最常见的值,并将其作为默认值 现在,许多年过去了。几乎没有人想再使用默认值了。现在我们都必须显式地设置值 为什么不默认为JDK版本?因为升级JDK可能会破坏现有的项目 为什么不

正如Maven的报告中所述

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


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

为了使配置更容易,他们选择了一个合理的默认设置。这允许任何想要使用该默认设置的项目不包括该配置。他们选择了他们认为最常见的值,并将其作为默认值

现在,许多年过去了。几乎没有人想再使用默认值了。现在我们都必须显式地设置值

为什么不默认为JDK版本?因为升级JDK可能会破坏现有的项目


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

为了简化配置,他们选择了一个合理的默认设置。这允许任何想要使用该默认设置的项目不包括该配置。他们选择了他们认为最常见的值,并将其作为默认值

现在,许多年过去了。几乎没有人想再使用默认值了。现在我们都必须显式地设置值

为什么不默认为JDK版本?因为升级JDK可能会破坏现有的项目


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

这里需要考虑的事情有很多。 “当前”一词表明,选择默认值的逻辑可能会在未来得到改进或增强。但我不会屏住呼吸

选择(或者更糟的是,更改)默认值总是一件棘手的事情,这正是Rob指出的原因。你是否安抚了抱怨者,给其他人带来了很多麻烦?或者你让安睡的狗躺着,保持一个过时的默认值?这两种选择都不是理想的,所以“什么都不做”会胜出——这是两种邪恶中较小的一种。做出改变的风险大于好处

khmarbaise的意思可能是Maven的默认值和您使用的JDK之间没有关系。要么是对的,要么不是,在这两种情况下,Maven都无能为力。Maven知道,您的机器上可能有五个不同的JDK。它无法知道您正在使用哪些工具,以及用于哪些项目

将默认值更新为1.8,您可能会遇到与更改前一样多的人无法使用默认值。(假设更少是一个合理的假设,但这仍然是一个假设。)无论默认值是什么,某个人、某个地方都必须使用自定义设置。那么,为什么要担心哪一组人是哪一组人呢?违约与便利有关;没别的了


目标是提供一致的行为。更改默认值(无论是否经常更改)与该目标背道而驰。知道Maven提供的一致性很可能值得那些不愿意添加两行XML来定制他们的项目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,因此这被视为合理的默认值。

Java注释和泛型在1.5版中引入。设置任何较低的级别都会破坏已编写的大部分Java代码。尽管版本1.6和1.7中引入了一些功能,但它们的使用不如泛型和注释那么广泛。但是,有许多J2EE构件需要1.6版本。大部分代码都是1.5版本的,因此这被看作是一个很好的例子