有没有办法告诉gradle idea插件在生成项目文件时使用自定义代码样式xml?
我总是可以将xml复制到“〜/ Library / Preferences / IntelliJIdea13 / codestyles”中,然后在导入项目后更改代码样式,但我希望gradle插件能够自动执行此操作作为其生成的一部分
谢谢!
答案 0 :(得分:3)
为了防止其他人试图这样做,我设法使用插件钩子来解决它,以便在将项目的ipr文件写入磁盘之前对其进行修改。基本上,将以下内容添加到build.gradle:
idea {
project {
ipr {
withXml { provider -> addCodeStyle(provider) }
}
}
}
def addCodeStyle(provider) {
def project = provider.asNode()
project.appendNode('component', [name: 'ProjectCodeStyleSettingsManager'])
def codeStyleNode = findComponent(project, 'ProjectCodeStyleSettingsManager')
codeStyleNode.appendNode('option', [name: 'USE_PER_PROJECT_SETTINGS', value: 'true'])
def projectSettingsNode = codeStyleNode.appendNode('option', [name: 'PER_PROJECT_SETTINGS']).appendNode('value')
def codeStyleUrl = "fileUrl".toURL()
//If you want to read from a file you could do new File(path).text
def codeStyleXml = new XmlParser().parseText(codeStyleUrl.text)
codeStyleXml.children().each { option ->
projectSettingsNode.append(option)
}
}
这假设您的代码样式首选项的xml遵循以下格式:
<?xml version="1.0" encoding="UTF-8"?>
<code_scheme name="X">
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="6" />
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="9" />
我认为从IntelliJ导出首选项时的标准格式。
答案 1 :(得分:1)
根据IDEA 2016.2.5,我接受的答案对我不起作用。没有错误,但未应用代码样式(这是在更新注释中建议的代码之后)。 我最终使用了这个(使用基于文件夹的配置):
task copyCodeStyle(type: Copy) {
from 'codeStyleSettings.xml'
into '.idea'
}
tasks.idea.dependsOn copyCodeStyle
codeStyleSettings.xml看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectCodeStyleSettingsManager">
<option name="PER_PROJECT_SETTINGS">
<value>
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="8" />
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="300" />