Skip to content

Commit 238ef98

Browse files
kashikewilkinsona
kashike
authored andcommitted
Use -parameters compiler arg by default in Gradle builds
See gh-9839
1 parent 8ab12d9 commit 238ef98

File tree

3 files changed

+77
-0
lines changed

3 files changed

+77
-0
lines changed

Diff for: spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java

+11
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.boot.gradle.plugin;
1818

1919
import java.util.Collections;
20+
import java.util.List;
2021
import java.util.concurrent.Callable;
2122

2223
import org.gradle.api.Action;
@@ -41,6 +42,7 @@
4142
*/
4243
final class JavaPluginAction implements PluginApplicationAction {
4344

45+
private static final String PARAMETERS_COMPILER_ARG = "-parameters";
4446
private final SinglePublishedArtifact singlePublishedArtifact;
4547

4648
JavaPluginAction(SinglePublishedArtifact singlePublishedArtifact) {
@@ -60,6 +62,7 @@ public void execute(Project project) {
6062
configureArtifactPublication(project, bootJar);
6163
configureBootRunTask(project);
6264
configureUtf8Encoding(project);
65+
configureParametersCompilerArg(project);
6366
}
6467

6568
private void disableJarTask(Project project) {
@@ -121,4 +124,12 @@ private void configureUtf8Encoding(Project project) {
121124
}));
122125
}
123126

127+
private void configureParametersCompilerArg(Project project) {
128+
project.getTasks().withType(JavaCompile.class, compile -> {
129+
final List<String> compilerArgs = compile.getOptions().getCompilerArgs();
130+
if (!compilerArgs.contains(PARAMETERS_COMPILER_ARG)) {
131+
compilerArgs.add(PARAMETERS_COMPILER_ARG);
132+
}
133+
});
134+
}
124135
}

Diff for: spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.java

+31
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,37 @@ public void javaCompileTasksUseUtf8Encoding() {
7373
.contains("compileTestJava = UTF-8");
7474
}
7575

76+
@Test
77+
public void javaCompileTasksUseParametersCompilerFlagByDefault() {
78+
assertThat(this.gradleBuild.build("javaParametersCompilerArg", "-PapplyJavaPlugin")
79+
.getOutput()).contains("compileJava has -parameters by default = true")
80+
.contains("compileTestJava has -parameters by default = true");
81+
}
82+
83+
// -parameters and an additional compiler arg
84+
@Test
85+
public void javaCompileTasksUseParametersCompilerFlagWhenOtherAdded() {
86+
assertThat(this.gradleBuild.build("javaParametersCompilerArg", "-PapplyJavaPlugin", "-PparametersAddOther")
87+
.getOutput()).contains("compileJava has -parameters when another arg has been added = true")
88+
.contains("compileTestJava has -parameters when another arg has been added = true");
89+
}
90+
91+
// -parameters removed
92+
@Test
93+
public void javaCompileTasksDoesNotUseParametersWhenParametersRemoved() {
94+
assertThat(this.gradleBuild.build("javaParametersCompilerArg", "-PapplyJavaPlugin", "-PparametersRemove")
95+
.getOutput()).contains("compileJava has -parameters when removed = false")
96+
.contains("compileTestJava has -parameters when removed = false");
97+
}
98+
99+
// compiler args cleared
100+
@Test
101+
public void javaCompileTasksDoesNotUseParametersWhenArgsCleared() {
102+
assertThat(this.gradleBuild.build("javaParametersCompilerArg", "-PapplyJavaPlugin", "-PparametersClear")
103+
.getOutput()).contains("compileJava has -parameters when cleared = false")
104+
.contains("compileTestJava has -parameters when cleared = false");
105+
}
106+
76107
@Test
77108
public void assembleRunsBootJarAndJarIsSkipped() {
78109
BuildResult result = this.gradleBuild.build("assemble");

Diff for: spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.gradle

+35
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,24 @@ if (project.hasProperty('applyJavaPlugin')) {
1010
apply plugin: 'java'
1111
}
1212

13+
if (project.hasProperty('parametersRemove')) {
14+
tasks.withType(JavaCompile) {
15+
options.compilerArgs.remove('-parameters')
16+
}
17+
}
18+
19+
if (project.hasProperty('parametersClear')) {
20+
tasks.withType(JavaCompile) {
21+
options.compilerArgs.clear()
22+
}
23+
}
24+
25+
if (project.hasProperty('parametersAddOther')) {
26+
tasks.withType(JavaCompile) {
27+
options.compilerArgs.add('-Xlint:all')
28+
}
29+
}
30+
1331
task('taskExists') {
1432
doFirst {
1533
println "$taskName exists = ${tasks.findByName(taskName) != null}"
@@ -23,3 +41,20 @@ task('javaCompileEncoding') {
2341
}
2442
}
2543
}
44+
45+
task('javaParametersCompilerArg') {
46+
doFirst {
47+
tasks.withType(JavaCompile) {
48+
def contains = options.compilerArgs.contains('-parameters')
49+
if (project.hasProperty('parametersRemove')) {
50+
println "$name has -parameters when removed = ${contains}"
51+
} else if (project.hasProperty('parametersClear')) {
52+
println "$name has -parameters when cleared = ${contains}"
53+
} else if (project.hasProperty('parametersAddOther')) {
54+
println "$name has -parameters when another arg has been added = ${contains}"
55+
} else {
56+
println "$name has -parameters by default = ${contains}"
57+
}
58+
}
59+
}
60+
}

0 commit comments

Comments
 (0)