From 238ef98f8b2749b29351b6be84b0e9e498198b10 Mon Sep 17 00:00:00 2001 From: kashike Date: Sat, 22 Jul 2017 09:29:29 -0700 Subject: [PATCH 1/2] Use -parameters compiler arg by default in Gradle builds See gh-9839 --- .../boot/gradle/plugin/JavaPluginAction.java | 11 ++++++ .../JavaPluginActionIntegrationTests.java | 31 ++++++++++++++++ .../JavaPluginActionIntegrationTests.gradle | 35 +++++++++++++++++++ 3 files changed, 77 insertions(+) diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java b/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java index 9156863f83..439d67b813 100644 --- a/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java @@ -17,6 +17,7 @@ package org.springframework.boot.gradle.plugin; import java.util.Collections; +import java.util.List; import java.util.concurrent.Callable; import org.gradle.api.Action; @@ -41,6 +42,7 @@ import org.springframework.boot.gradle.tasks.run.BootRun; */ final class JavaPluginAction implements PluginApplicationAction { + private static final String PARAMETERS_COMPILER_ARG = "-parameters"; private final SinglePublishedArtifact singlePublishedArtifact; JavaPluginAction(SinglePublishedArtifact singlePublishedArtifact) { @@ -60,6 +62,7 @@ final class JavaPluginAction implements PluginApplicationAction { configureArtifactPublication(project, bootJar); configureBootRunTask(project); configureUtf8Encoding(project); + configureParametersCompilerArg(project); } private void disableJarTask(Project project) { @@ -121,4 +124,12 @@ final class JavaPluginAction implements PluginApplicationAction { })); } + private void configureParametersCompilerArg(Project project) { + project.getTasks().withType(JavaCompile.class, compile -> { + final List compilerArgs = compile.getOptions().getCompilerArgs(); + if (!compilerArgs.contains(PARAMETERS_COMPILER_ARG)) { + compilerArgs.add(PARAMETERS_COMPILER_ARG); + } + }); + } } diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.java b/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.java index 068a3b838d..8f13e196bb 100644 --- a/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.java +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.java @@ -73,6 +73,37 @@ public class JavaPluginActionIntegrationTests { .contains("compileTestJava = UTF-8"); } + @Test + public void javaCompileTasksUseParametersCompilerFlagByDefault() { + assertThat(this.gradleBuild.build("javaParametersCompilerArg", "-PapplyJavaPlugin") + .getOutput()).contains("compileJava has -parameters by default = true") + .contains("compileTestJava has -parameters by default = true"); + } + + // -parameters and an additional compiler arg + @Test + public void javaCompileTasksUseParametersCompilerFlagWhenOtherAdded() { + assertThat(this.gradleBuild.build("javaParametersCompilerArg", "-PapplyJavaPlugin", "-PparametersAddOther") + .getOutput()).contains("compileJava has -parameters when another arg has been added = true") + .contains("compileTestJava has -parameters when another arg has been added = true"); + } + + // -parameters removed + @Test + public void javaCompileTasksDoesNotUseParametersWhenParametersRemoved() { + assertThat(this.gradleBuild.build("javaParametersCompilerArg", "-PapplyJavaPlugin", "-PparametersRemove") + .getOutput()).contains("compileJava has -parameters when removed = false") + .contains("compileTestJava has -parameters when removed = false"); + } + + // compiler args cleared + @Test + public void javaCompileTasksDoesNotUseParametersWhenArgsCleared() { + assertThat(this.gradleBuild.build("javaParametersCompilerArg", "-PapplyJavaPlugin", "-PparametersClear") + .getOutput()).contains("compileJava has -parameters when cleared = false") + .contains("compileTestJava has -parameters when cleared = false"); + } + @Test public void assembleRunsBootJarAndJarIsSkipped() { BuildResult result = this.gradleBuild.build("assemble"); diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.gradle b/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.gradle index 70df201a02..a383b340da 100644 --- a/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.gradle +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.gradle @@ -10,6 +10,24 @@ if (project.hasProperty('applyJavaPlugin')) { apply plugin: 'java' } +if (project.hasProperty('parametersRemove')) { + tasks.withType(JavaCompile) { + options.compilerArgs.remove('-parameters') + } +} + +if (project.hasProperty('parametersClear')) { + tasks.withType(JavaCompile) { + options.compilerArgs.clear() + } +} + +if (project.hasProperty('parametersAddOther')) { + tasks.withType(JavaCompile) { + options.compilerArgs.add('-Xlint:all') + } +} + task('taskExists') { doFirst { println "$taskName exists = ${tasks.findByName(taskName) != null}" @@ -23,3 +41,20 @@ task('javaCompileEncoding') { } } } + +task('javaParametersCompilerArg') { + doFirst { + tasks.withType(JavaCompile) { + def contains = options.compilerArgs.contains('-parameters') + if (project.hasProperty('parametersRemove')) { + println "$name has -parameters when removed = ${contains}" + } else if (project.hasProperty('parametersClear')) { + println "$name has -parameters when cleared = ${contains}" + } else if (project.hasProperty('parametersAddOther')) { + println "$name has -parameters when another arg has been added = ${contains}" + } else { + println "$name has -parameters by default = ${contains}" + } + } + } +} From 70393300c266baececcfa49c597a5069d5dff7e3 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Wed, 20 Sep 2017 12:29:25 +0100 Subject: [PATCH 2/2] Polish "Use -parameters compiler arg by default in Gradle builds" Closes gh-9839 --- .../src/main/asciidoc/reacting.adoc | 1 + .../boot/gradle/plugin/JavaPluginAction.java | 5 +-- .../JavaPluginActionIntegrationTests.java | 32 ++++++----------- ...errideDefaultParametersCompilerFlag.gradle | 21 +++++++++++ ...arametersAndAdditionalCompilerFlags.gradle | 20 +++++++++++ ...sUseParametersCompilerFlagByDefault.gradle | 16 +++++++++ .../JavaPluginActionIntegrationTests.gradle | 35 ------------------- 7 files changed, 72 insertions(+), 58 deletions(-) create mode 100644 spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests-javaCompileTasksCanOverrideDefaultParametersCompilerFlag.gradle create mode 100644 spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests-javaCompileTasksUseParametersAndAdditionalCompilerFlags.gradle create mode 100644 spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests-javaCompileTasksUseParametersCompilerFlagByDefault.gradle diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/main/asciidoc/reacting.adoc b/spring-boot-tools/spring-boot-gradle-plugin/src/main/asciidoc/reacting.adoc index 1de2476b76..22029c0124 100644 --- a/spring-boot-tools/spring-boot-gradle-plugin/src/main/asciidoc/reacting.adoc +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/main/asciidoc/reacting.adoc @@ -21,6 +21,7 @@ plugin: 5. Creates a configuration named `bootArchives` that contains the artifact produced by the `bootJar` task. 6. Configures any `JavaCompile` tasks with no configured encoding to use `UTF-8`. +7. Configures any `JavaCompile` tasks to use the `-parameters` compiler argument. diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java b/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java index 439d67b813..1359dfd905 100644 --- a/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java @@ -125,11 +125,12 @@ final class JavaPluginAction implements PluginApplicationAction { } private void configureParametersCompilerArg(Project project) { - project.getTasks().withType(JavaCompile.class, compile -> { - final List compilerArgs = compile.getOptions().getCompilerArgs(); + project.getTasks().withType(JavaCompile.class, (compile) -> { + List compilerArgs = compile.getOptions().getCompilerArgs(); if (!compilerArgs.contains(PARAMETERS_COMPILER_ARG)) { compilerArgs.add(PARAMETERS_COMPILER_ARG); } }); } + } diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.java b/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.java index 8f13e196bb..53ab13366f 100644 --- a/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.java +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.java @@ -75,33 +75,23 @@ public class JavaPluginActionIntegrationTests { @Test public void javaCompileTasksUseParametersCompilerFlagByDefault() { - assertThat(this.gradleBuild.build("javaParametersCompilerArg", "-PapplyJavaPlugin") - .getOutput()).contains("compileJava has -parameters by default = true") - .contains("compileTestJava has -parameters by default = true"); + assertThat(this.gradleBuild.build("javaCompileTasksCompilerArgs").getOutput()) + .contains("compileJava compiler args: [-parameters]") + .contains("compileTestJava compiler args: [-parameters]"); } - // -parameters and an additional compiler arg @Test - public void javaCompileTasksUseParametersCompilerFlagWhenOtherAdded() { - assertThat(this.gradleBuild.build("javaParametersCompilerArg", "-PapplyJavaPlugin", "-PparametersAddOther") - .getOutput()).contains("compileJava has -parameters when another arg has been added = true") - .contains("compileTestJava has -parameters when another arg has been added = true"); + public void javaCompileTasksUseParametersAndAdditionalCompilerFlags() { + assertThat(this.gradleBuild.build("javaCompileTasksCompilerArgs").getOutput()) + .contains("compileJava compiler args: [-parameters, -Xlint:all]") + .contains("compileTestJava compiler args: [-parameters, -Xlint:all]"); } - // -parameters removed @Test - public void javaCompileTasksDoesNotUseParametersWhenParametersRemoved() { - assertThat(this.gradleBuild.build("javaParametersCompilerArg", "-PapplyJavaPlugin", "-PparametersRemove") - .getOutput()).contains("compileJava has -parameters when removed = false") - .contains("compileTestJava has -parameters when removed = false"); - } - - // compiler args cleared - @Test - public void javaCompileTasksDoesNotUseParametersWhenArgsCleared() { - assertThat(this.gradleBuild.build("javaParametersCompilerArg", "-PapplyJavaPlugin", "-PparametersClear") - .getOutput()).contains("compileJava has -parameters when cleared = false") - .contains("compileTestJava has -parameters when cleared = false"); + public void javaCompileTasksCanOverrideDefaultParametersCompilerFlag() { + assertThat(this.gradleBuild.build("javaCompileTasksCompilerArgs").getOutput()) + .contains("compileJava compiler args: [-Xlint:all]") + .contains("compileTestJava compiler args: [-Xlint:all]"); } @Test diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests-javaCompileTasksCanOverrideDefaultParametersCompilerFlag.gradle b/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests-javaCompileTasksCanOverrideDefaultParametersCompilerFlag.gradle new file mode 100644 index 0000000000..ad4850a8a5 --- /dev/null +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests-javaCompileTasksCanOverrideDefaultParametersCompilerFlag.gradle @@ -0,0 +1,21 @@ +buildscript { + dependencies { + classpath files(pluginClasspath.split(',')) + } +} + +apply plugin: 'org.springframework.boot' +apply plugin: 'java' + +tasks.withType(JavaCompile) { + options.compilerArgs = ['-Xlint:all'] +} + + +task('javaCompileTasksCompilerArgs') { + doFirst { + tasks.withType(JavaCompile) { + println "$name compiler args: ${options.compilerArgs}" + } + } +} diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests-javaCompileTasksUseParametersAndAdditionalCompilerFlags.gradle b/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests-javaCompileTasksUseParametersAndAdditionalCompilerFlags.gradle new file mode 100644 index 0000000000..f72a0ca106 --- /dev/null +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests-javaCompileTasksUseParametersAndAdditionalCompilerFlags.gradle @@ -0,0 +1,20 @@ +buildscript { + dependencies { + classpath files(pluginClasspath.split(',')) + } +} + +apply plugin: 'org.springframework.boot' +apply plugin: 'java' + +tasks.withType(JavaCompile) { + options.compilerArgs << '-Xlint:all' +} + +task('javaCompileTasksCompilerArgs') { + doFirst { + tasks.withType(JavaCompile) { + println "$name compiler args: ${options.compilerArgs}" + } + } +} diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests-javaCompileTasksUseParametersCompilerFlagByDefault.gradle b/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests-javaCompileTasksUseParametersCompilerFlagByDefault.gradle new file mode 100644 index 0000000000..fec32ce90f --- /dev/null +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests-javaCompileTasksUseParametersCompilerFlagByDefault.gradle @@ -0,0 +1,16 @@ +buildscript { + dependencies { + classpath files(pluginClasspath.split(',')) + } +} + +apply plugin: 'org.springframework.boot' +apply plugin: 'java' + +task('javaCompileTasksCompilerArgs') { + doFirst { + tasks.withType(JavaCompile) { + println "$name compiler args: ${options.compilerArgs}" + } + } +} diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.gradle b/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.gradle index a383b340da..70df201a02 100644 --- a/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.gradle +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.gradle @@ -10,24 +10,6 @@ if (project.hasProperty('applyJavaPlugin')) { apply plugin: 'java' } -if (project.hasProperty('parametersRemove')) { - tasks.withType(JavaCompile) { - options.compilerArgs.remove('-parameters') - } -} - -if (project.hasProperty('parametersClear')) { - tasks.withType(JavaCompile) { - options.compilerArgs.clear() - } -} - -if (project.hasProperty('parametersAddOther')) { - tasks.withType(JavaCompile) { - options.compilerArgs.add('-Xlint:all') - } -} - task('taskExists') { doFirst { println "$taskName exists = ${tasks.findByName(taskName) != null}" @@ -41,20 +23,3 @@ task('javaCompileEncoding') { } } } - -task('javaParametersCompilerArg') { - doFirst { - tasks.withType(JavaCompile) { - def contains = options.compilerArgs.contains('-parameters') - if (project.hasProperty('parametersRemove')) { - println "$name has -parameters when removed = ${contains}" - } else if (project.hasProperty('parametersClear')) { - println "$name has -parameters when cleared = ${contains}" - } else if (project.hasProperty('parametersAddOther')) { - println "$name has -parameters when another arg has been added = ${contains}" - } else { - println "$name has -parameters by default = ${contains}" - } - } - } -}