我有一个包含许多模块的项目。我们正在升级到Java7,并且我希望我的编辑器能够反映这一点。现在,所有的模块都将语言级别明确设置为Java6,但是有太多的模块需要我去更改每个模块的设置。我该如何将所有的模块设置为Java7?更好的方法是如何设置所有模块使用项目的语言级别?
我有一个包含许多模块的项目。我们正在升级到Java7,并且我希望我的编辑器能够反映这一点。现在,所有的模块都将语言级别明确设置为Java6,但是有太多的模块需要我去更改每个模块的设置。我该如何将所有的模块设置为Java7?更好的方法是如何设置所有模块使用项目的语言级别?
正如在另一个回答中 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标准。
sed -i
命令可能会失败(请参见https://dev59.com/Om855IYBdhLWcg3wm1q3)- 您需要使用find . -type f -name "*.iml" -print0 | xargs -0 sed -i "" "s/JDK_1_5/JDK_1_8/g"
命令替代! - luk2302compiler.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>