如何在IntelliJ中为所有模块更改语言级别

41

我有一个包含许多模块的项目。我们正在升级到Java7,并且我希望我的编辑器能够反映这一点。现在,所有的模块都将语言级别明确设置为Java6,但是有太多的模块需要我去更改每个模块的设置。我该如何将所有的模块设置为Java7?更好的方法是如何设置所有模块使用项目的语言级别?


1
这不是一个真正的答案,但我已经在我的maven-compiler-plugin配置中更改了编译器版本并重新导入了项目。那似乎起作用了。 - Niel de Wet
4个回答

24

正如在另一个回答中 Lambart 的评论中指出的那样,该解决方案无法同时更改所有模块的目标版本。

此外,请注意设置项目的目标级别是可以的,但此目标版本会被模块中指定的版本覆盖。

如果你和我一样,需要处理一个包含100多个模块的Java单体应用程序,则逐个更改模块将很麻烦。


我的解决方案在LINUX下有些“繁琐”,但可行。在本示例中,假设您要将版本从1.5更新为1.8

步骤1) 进入 .idea 文件夹并查找文件 compiler.xml

替换标签<module>中的所有target值,例如:

target="1.5" 
target="1.8"

步骤2) 进入项目文件夹并运行以下脚本。

find . -type f -name "*.iml" -print0 | xargs -0 sed -i "s/JDK_1_5/JDK_1_8/g"

将所有模块中的语言级别替换为符合JDK8标准。


1
作为一个附注,您可能想重新创建该项目。但有时与项目相关的信息太多(运行配置文件、数据库连接等),您可能更愿意避免删除它并从头开始重新创建。 - JeanValjean
5
如果您正在使用Mac,请注意sed -i命令可能会失败(请参见https://dev59.com/Om855IYBdhLWcg3wm1q3)- 您需要使用find . -type f -name "*.iml" -print0 | xargs -0 sed -i "" "s/JDK_1_5/JDK_1_8/g"命令替代! - luk2302
1
@luk2302 是的,我在使用LINUX。我在我的回答中指定了这一点。如果需要,请随时更新以添加mac用户情况。 - JeanValjean
@JeanValjean,模块语言仍然设置为“5”。研究得不错! - Gaurav

19
In IntelliJ IDEA 14.0,依次点击“文件(File)”、“项目结构(Project Structure)”、“模块(Modules)”(Ctrl+Shift+Alt+S)。
模块列表支持多选,您可以:
- Ctrl+单击选择单个模块 - Shift+单击选择一段模块 - Ctrl+A 全选所有模块
在下拉菜单中选择“语言级别(Language level)”,并手动选择级别或选择“使用项目语言级别”。
同样地,要更改项目的语言级别,请在左侧的项目设置(Project Settings)下选择项目。可用的下拉菜单是“项目语言级别(Project language level)”。选择所需级别,这将为所有项目模块设置默认值。
来源:

3
谢谢,这很有帮助。但是,选择多个模块似乎不能让您一次性更改它们的“语言级别”。我必须逐个选择每个模块,然后才能将其“语言级别”设置为“项目默认”,这正是我想要的。 - Lambart
4
只有当所有选中的模块具有相同的语言级别时,多重选择才会起作用——如果语言级别混合,则设置语言级别无效。看起来像一个错误.. - ccpizza
3
在 IntelliJ 2017.3.2 中,即使确保所有模块最初使用相同的语言级别,多选仍无法正常工作。 - Matt Craig
2
@ShooShoSha 多选功能无法正常工作,只会更改第一个模块的值。 - Gaurav
@gaurav,当选择模块时,你可能需要考虑语言级别,就像ccpizza所评论的那样。 - ShooShoSha

6
其他解决方案对我没有用,即使我手动修改了compiler.xml和所有的.iml文件,LANGUAGE_LEVEL仍然被设置为"JDK_1_5"。这是由于maven-compiler-plugin插件的configuration选项引起的。将其更改为以下内容即可修复:
<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>

希望这也能解决其他人的问题。

1
谢谢@iusting,非常感谢。我一整天都在1.8级别上很好地工作。我添加了上面的插件,突然我的代码库出现了编译错误。这个Intellij的“特性”非常糟糕。事实上,在Gradle中也会发生同样的事情,但幸运的是,那里有一个明显的设置。在晚上,有一个截止日期,像这样的解决方案是一种福音。再次感谢。 - Beezer

0
为什么不做“Command + Shift + R”(我在Mac上),然后勾选“文件掩码”并输入“*.iml”? 然后搜索并替换任何你想要的内容。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接