停止 IntelliJIDEA 在每次重新加载 pom 时切换 java 语言级别(或更改默认的项目语言级别)

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

我可以将语言级别更改为8.0(F4-> 模块-> 语言级别) ,但是每次编辑 pom.xml 时,项目级别都会切换回“使用项目语言级别”,我必须一次又一次地编辑这些设置。

我需要向 pom.xml 添加什么东西来将默认语言级别设置为8.0吗?

99479 次浏览

根据马克的评论,以下是如何做到这一点:

<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>

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

所以存在一个概念上的冲突,这是被 Intellij IDEA 所忽略的。IDE 仍然允许设置项目和模块设置,但是没有提供任何警告或反馈,说明这个设置是由 pom.xml 控制的。解决方案可能是显式地允许重写 POM 编译器插件设置(这可能不明智,因为当您在命令行上使用 maven 时会发生什么情况) ,或者在 POM 中的此设置生效时停用 IDE 中的控件。

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

对于维京史蒂夫的回答,一个简短的版本是:

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

由于使用 DropWizard 构建微服务,我在这个问题上遇到了很多困难。最终我发现我的构建属性放错了 文件(主服务的 pom.xml)。

因此,即使其他包更像 图书馆,我也不能使用 Java8语法。

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

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

有两种方法可以做到这一点,将其中之一添加到 pom.xml 文件中:

首次添加属性

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

Second-Add Plugin 第二个-添加插件

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

如果有帮助就告诉我。

这些解决方案对我的情况都没有帮助。我不需要在我的 pom.xml中指定任何 Java 版本。

我需要打开 <project-name>.iml文件并在那里更改 JDK 版本。

原文:

<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5">
<!-- ...                                                   ^ -->
<!-- ...                                                   | -->

更新:

<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<!-- ...                                                   ^ -->
<!-- ...                                                   | -->

这完全没有意义,我从来没有为 Java 1.5指定过 JDK 版本。

对我来说,将 POM (插件加属性)更新到所需的 Java 编译器版本(在我的例子中是1 _ 7)的解决方案奏效了。 然而。每个项目的 iml 文件都是用原始的 pom 生成的(默认的编译器版本是1 _ 5,上面有人解释过) ,JDK 版本是1 _ 5,这仍然覆盖了 pom 版本。

我删除了。Idea 文件夹手动导入模块到 IntelliJ 中,并从更新的 pom 中重新导入。当我从更新后的 POM 重新导入 Module 时,我可以看到 iml 文件具有更新后的 JDK 版本(在我的例子中是1 _ 7)。

除了 设置 maven 生成属性添加 maven 编译器插件修改.iml 文件中的 Java 版本之外,还有一个额外的步骤我必须遵循。(每个答案都已经记录在案)。你也必须 在设置中设置编译器版本

我正在将一个项目从 JDK 8升级到 JDK 10 + :

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

然而,Ideas 项目将继续将语言级别重置为8。

最后,我发现 Ideas 的 Maven 导入过程使用 JDK 8来导入项目,这将语言级别限制为 < = 8。

为了修复 ,我更新了“ Settings-> Build,Execution,Deployment-> Build Tools-> Maven-> Import To use JDK 11”下的“ JDK for import”属性。

enter image description here

谢谢,很有效。

小心不要犯和我一样的错误。

如果你有配置文件,添加插件在正确的配置文件。

<profiles>
<profile>
<id>foo</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>bar</id>
.......
</profile>
<profiles>

问题: 预期的 Java 版本: 11,但停留在版本: 8

  • 几乎所有的答案我都试过了,但是我还是卡在 语文水平8上,在我的项目或 Intellij IDE 中,我找不到任何与 Java 版本8相关的线索。

  • 然后我探索了 家长Pom.xml,但是没有成功,但是在 祖父母Pom.xml中,我发现发行版是8。

解决方案 : 在属性中添加以下3行会产生不同的效果。

<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.release>11</maven.compiler.release>
</properties>

对我来说,解决这个问题的是一系列的更新:

  • 在“项目结构”> 模块中: 将语言级 Java 版本更改为8
  • 在项目结构 > 项目: Java 版本应该是1.8
  • 在 pom 文件中,上述响应中指定的相同更改
  • 在设置 > Java 编译器 > 中将字节码版本更改为8
  • 在 Settings > maven > import > JDK for import 应该是1.8