停止IntelliJ IDEA的每一个POM中重新加载时间切换Java语言水平(或更改默认的项目语言

2019-05-13 04:56发布

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

我可以更改语言水平8.0(F4 - >模块 - >语言水平),但是编辑我的pom.xml项目级别切换回“项目使用的语言水平”每一次,我不得不再次修改这个设置,再次。

有什么我需要添加到pom.xml中设置默认语言水平8.0吗?

Answer 1:

按照马克的评论,这里是如何做到这一点:

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


Answer 2:

vikingsteve的回答更短的版本是:

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


Answer 3:

我认为这与Maven的编译器插件和IntelliJ理念之间的冲突的概念做。 显然,编译器插件的新版本有1.5的默认级别(见http://maven.apache.org/plugins/maven-compiler-plugin/ )。 因此,如果编译器插件用于在所有的项目中,编译器级别未明确在pom.xml,每当POM重新处理水平将恢复到默认设置。

所以这是由IntelliJ IDEA的忽略的概念冲突。 IDE将仍然允许一个设置项目和模块设置,但没有提供任何警告或反馈,这种设置被控制的pom.xml。 解决方案要么是明确允许重写POM编译器插件设置(也许不是明智的,因为当你在命令行中使用Maven做什么然后发生),或停用控制在IDE中当从POM该设置生效。

在目前的解决方案是设置在编译器插件期望编译器级别在POM中,重新导入,而不是试图将其设置在模块设置。



Answer 4:

这样做有两种方式,加入其中一方在你的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>

让我知道,如果它帮助。



Answer 5:

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

我需要打开<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">
    <!-- ...                                                   ^ -->
    <!-- ...                                                   | -->

这是没有意义的。 在任何时候,有我指定的JDK版本的Java 1.5。



Answer 6:

我从升级JDK 8到JDK 10+的项目。 我有正确指定编译器的属性如下:

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

然而思想项目将不断进行复位的语言水平为8。

最后,我想通了,思想的Maven的导入过程中使用JDK 8导入哪些限制了语言水平为<= 8的项目。

要解决我设置下更新了“JDK的进口商”属性- >构建,执行,部署- >生成工具- >的Maven - >导入使用JDK 11。



Answer 7:

我挣扎了很多这样的问题,由于建设微服务与Dropwizard。 最后,我发现我有错POM文件(主要服务是我的生成属性pom.xml )。

所以,即使其他包更像是图书馆 ,我无法使用Java 8语法。

当我重构构建插件安装到“全球” .pom.xml “的文件,所有子容器能够使用新的语法。

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



Answer 8:

对我来说,(在我的情况1_7)更新POM(插件加属性)到所需的Java编译器版本的解决方案工作。 然而,由于每个项目的.iml文件与原来的聚甲醛(有1_5用如上述解释的人默认的编译器版本)生成具有1_5一个JDK版本,这仍然会覆盖POM版本。

我手动删除文件夹.idea并导入模块插入的IntelliJ与从更新后的POM重新导入。 当我重新导入从更新POM的模块,我可以看到的是,IML文件有(在我的情况1_7)更新的JDK版本。



Answer 9:

有一个额外的步骤我只好跟着,除了设置Maven构建性能 , 加入Maven的编译器插件 ,并修改该文件.iml Java版本 。 (每个已经记录在其他的答案)。 您还可以设置在设置编译器的版本 。



文章来源: stop IntelliJ IDEA to switch java language level every time the pom is reloaded (or change the default project language level)