diff --git a/.gitignore b/.gitignore index b7ad2bba74104..fd5449b9fc3b6 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,6 @@ build-idea/ out/ # include shared intellij config -!.idea/checkstyle-idea.xml !.idea/eclipseCodeFormatter.xml !.idea/externalDependencies.xml !.idea/inspectionProfiles/Project_Default.xml diff --git a/build-tools-internal/src/main/groovy/elasticsearch.ide.gradle b/build-tools-internal/src/main/groovy/elasticsearch.ide.gradle index 9c45aa0030805..91f6345d4c4ba 100644 --- a/build-tools-internal/src/main/groovy/elasticsearch.ide.gradle +++ b/build-tools-internal/src/main/groovy/elasticsearch.ide.gradle @@ -25,15 +25,35 @@ tasks.register('configureIdeCheckstyle') { group = 'ide' description = 'Generated a suitable checkstyle config for IDEs' - String checkstyleConfig = 'build-tools-internal/src/main/resources/checkstyle.xml' - String checkstyleSuppressions = 'build-tools-internal/src/main/resources/checkstyle_suppressions.xml' - String checkstyleIdeFragment = 'build-tools-internal/src/main/resources/checkstyle_ide_fragment.xml' - String checkstyleIdeConfig = "$rootDir/checkstyle_ide.xml" - - inputs.files(file(checkstyleConfig), file(checkstyleIdeFragment)) - outputs.files(file(checkstyleIdeConfig)) + String resources = 'build-tools-internal/src/main/resources' + String checkstyleConfig = "${resources}/checkstyle.xml" + String checkstyleSuppressions = "${resources}/checkstyle_suppressions.xml" + String checkstyleIdeFragment = "${resources}/checkstyle_ide_fragment.xml" + String checkstyleIdeConfig = "${rootDir}/checkstyle_ide.xml" + + String checkstylePluginConfigTemplate = "${resources}/checkstyle-idea.xml" + String checkstylePluginConfig = "${rootDir}/.idea/checkstyle-idea.xml" + + inputs.files( + file(checkstyleConfig), + file(checkstyleIdeFragment), + file(checkstylePluginConfigTemplate) + ) + outputs.files( + file(checkstyleIdeConfig), + file(checkstylePluginConfig) + ) doLast { + // Configure the IntelliJ Checkstyle plugin by copying a standard file. We don't simply commit + // the result to version control, because the plugin has a habit of modifying the file and + // replacing the `$PROJECT_DIR$` placeholders, which developers must then revert. + Files.copy( + Paths.get(file(checkstylePluginConfigTemplate).getPath()), + Paths.get(file(checkstylePluginConfig).getPath()), + StandardCopyOption.REPLACE_EXISTING + ) + // Create an IDE-specific checkstyle config by first copying the standard config Files.copy( Paths.get(file(checkstyleConfig).getPath()), diff --git a/.idea/checkstyle-idea.xml b/build-tools-internal/src/main/resources/checkstyle-idea.xml similarity index 100% rename from .idea/checkstyle-idea.xml rename to build-tools-internal/src/main/resources/checkstyle-idea.xml