停止IntelliJ IDEA切换Java语言级别每次重新加载POM(或更改默认的项目语言级别)

使用IntelliJ 12,我有一个Java项目,我用一个pom.xml的maven。 我的项目使用java8,但似乎默认的项目语言级已被设置为6导入项目。

我可以将语言级别更改为8.0(F4 – >模块 – >语言级别),但每次编辑我的pom.xml时,项目级别将切换回“使用项目语言级别”,我必须再次编辑此设置,再次。

有什么我需要添加到pom.xml将默认语言级别设置为8.0?

按照Mark的评论,这里是如何做到的:

<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> 

vikingsteve答案的缩写版本是:

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

我认为这与Maven编译器插件和IntelliJ思想之间的概念冲突有关。 显然,新版本的编译器插件的默认级别为1.5(请参阅http://maven.apache.org/plugins/maven-compiler-plugin/ )。 因此,如果在项目中完全使用编译器插件,并且没有在pom.xml中显式设置编译器级别,则无论何时重新处理POM,级别都将恢复为默认级别。

所以Intellij IDEA忽略了一个概念上的冲突。 IDE仍允许设置项目和模块设置,但不提供任何警告或反馈,表示此设置由pom.xml控制。 解决方法是显式允许覆盖POM编译器插件设置(也许不是明智的,因为当你在命令行使用maven时会发生什么),或者当POM中的这个设置生效时,停用IDE中的控件。

目前的解决scheme是在编译器插件中设置所需的编译器级别,重新导入,而不是尝试将其设置在模块设置中。

有两种方法可以做到这一点,在您的pom.xml文件中添加其中的一个:

首先 – 添加属性

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

第二 – 添加插件

 <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> 

让我知道是否有帮助。

由于使用Dropwizard构build微服务,我在这个问题上挣扎不已。 最终我发现我的构build属性在错误的pom文件中(主服务的pom.xml )。

所以,即使其他软件包更像 ,我也无法使用Java 8语法。

当我将构build插件重构到“全局” .pom.xml文件中时,所有的子容器都能够使用新的语法。

可以帮助有人遇到多容器项目的问题