如何使用Gradle的Idea插件配置IntelliJ代码格式化规则
解决方案
方法一:直接绑定本地预定义的代码样式配置文件(最推荐,易维护)
这是最省事的方案,你只需要先在IDEA中手动调整好所有格式化规则,导出到项目目录内即可:
- 第一步:在IDEA中打开
设置 > 编辑器 > 代码样式,调整完所有你需要的规则后,点击右侧齿轮图标,选择导出 > 导出到IntelliJ IDEA代码样式XML文件,保存到项目的gradle/config/codeStyles/目录下,命名为Project.xml - 第二步:在Gradle的idea插件配置中添加规则,自动将配置文件同步到IDEA项目配置目录:
plugins { id 'idea' } idea { project { jdkName = "1.8" languageLevel = "1.8" targetBytecodeVersion = JavaVersion.VERSION_1_8 } // 新增代码样式配置 module { // 配置代码样式文件映射 sourceDirs += file("gradle/config/codeStyles") // 执行idea任务时自动复制样式文件到对应目录 task doLast { copy { from "gradle/config/codeStyles/Project.xml" into ".idea/codeStyles/" } } } }
方法二:通过withXml钩子动态修改IDEA配置
如果需要动态生成配置或者只修改少量规则,可以直接通过Gradle提供的XML修改钩子操作配置,示例如下:
plugins { id 'idea' } idea { project { jdkName = "1.8" languageLevel = "1.8" targetBytecodeVersion = JavaVersion.VERSION_1_8 // 动态修改IPR配置(适用于文件式IDEA项目配置) ipr { withXml { provider -> def node = provider.asNode() // 查找代码样式配置节点,不存在则创建 def codeStyleSettings = node.component.find { it.@name == 'ProjectCodeStyleSettingsManager' } ?: node.appendNode('component', [name: 'ProjectCodeStyleSettingsManager']) def option = codeStyleSettings.option.find { it.@name == 'PER_PROJECT_SETTINGS' } ?: codeStyleSettings.appendNode('option', [name: 'PER_PROJECT_SETTINGS']) def value = option.value ?: option.appendNode('value') // 配置Java代码缩进为4,禁用Tab符 def javaSettings = value.component.find { it.@name == 'JavaCodeStyleSettings' } ?: value.appendNode('component', [name: 'JavaCodeStyleSettings']) javaSettings.appendNode('option', [name: 'INDENT_SIZE', value: '4']) javaSettings.appendNode('option', [name: 'USE_TAB_CHARACTER', value: 'false']) javaSettings.appendNode('option', [name: 'RIGHT_MARGIN', value: '120']) // 配置导入不使用*通配符 javaSettings.appendNode('option', [name: 'CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND', value: '99']) javaSettings.appendNode('option', [name: 'NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND', value: '99']) } } } }
如何确定所需的配置内容
- 先在IDEA中手动修改你需要调整的格式化规则,保存设置
- 打开项目下的
.idea/codeStyles/Project.xml文件,对比修改前后的内容差异,找到对应的配置项名称和取值 - 将对应配置项映射到上述withXml的配置逻辑中即可
内容的提问来源于stack exchange,提问作者Brad Mace
相关产品推荐
相关产品推荐

