Skip to content

Commit 514abec

Browse files
committed
Tighten rules with compiler warnings
This commit configures the Java compiler to break the build in case of the following warnings: * Calling deprecated code * Use of unchecked and raw types * Incorrect use of varargs Closes gh-1537
1 parent b980551 commit 514abec

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

gradle/plugins/conventions-plugin/src/main/java/org/springframework/ws/gradle/conventions/JavaPluginConventions.java

+21-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package org.springframework.ws.gradle.conventions;
1818

19+
import java.util.Arrays;
20+
import java.util.List;
1921
import java.util.Map;
2022

2123
import io.spring.javaformat.gradle.SpringJavaFormatPlugin;
@@ -28,6 +30,7 @@
2830
import org.gradle.api.plugins.JavaPluginExtension;
2931
import org.gradle.api.tasks.SourceSet;
3032
import org.gradle.api.tasks.bundling.Jar;
33+
import org.gradle.api.tasks.compile.JavaCompile;
3134
import org.gradle.api.tasks.testing.Test;
3235
import org.gradle.jvm.toolchain.JavaLanguageVersion;
3336

@@ -42,6 +45,7 @@ class JavaPluginConventions {
4245

4346
void apply(Project project) {
4447
project.getPlugins().apply(SpringJavaFormatPlugin.class);
48+
configureJavaConventions(project);
4549
JavaPluginExtension java = project.getExtensions().getByType(JavaPluginExtension.class);
4650
enableSourceAndJavadocJars(java);
4751
configureSourceAndTargetCompatibility(java);
@@ -52,7 +56,22 @@ void apply(Project project) {
5256
configureJUnitPlatform(project);
5357
}
5458

55-
59+
private void configureJavaConventions(Project project) {
60+
project.getTasks().withType(JavaCompile.class, (compile) -> {
61+
compile.getOptions().setEncoding("UTF-8");
62+
List<String> args = compile.getOptions().getCompilerArgs();
63+
if (!args.contains("-parameters")) {
64+
args.add("-parameters");
65+
}
66+
boolean buildWithJava17 = !project.hasProperty("toolchainVersion")
67+
&& JavaVersion.current() == JavaVersion.VERSION_17;
68+
if (buildWithJava17) {
69+
args.addAll(Arrays.asList("-Werror", "-Xlint:unchecked", "-Xlint:deprecation", "-Xlint:rawtypes",
70+
"-Xlint:varargs"));
71+
}
72+
});
73+
project.getDependencies().add("compileOnly", "com.google.code.findbugs:jsr305");
74+
}
5675

5776
private void enableSourceAndJavadocJars(JavaPluginExtension java) {
5877
java.withSourcesJar();
@@ -106,6 +125,7 @@ private void configureJavadocClasspath(Project project, JavaPluginExtension java
106125

107126
private void configureJUnitPlatform(Project project) {
108127
project.getTasks().withType(Test.class).configureEach((task) -> task.useJUnitPlatform());
128+
project.getDependencies().add("testImplementation", "org.apiguardian:apiguardian-api");
109129
project.getDependencies().add("testRuntimeOnly", "org.junit.platform:junit-platform-launcher");
110130
}
111131

spring-ws-platform/build.gradle

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ dependencies {
1717
api(platform("org.springframework.security:spring-security-bom:6.3.9-SNAPSHOT"))
1818
constraints {
1919
api("com.fasterxml.woodstox:woodstox-core:6.5.1")
20+
api("com.google.code.findbugs:jsr305:3.0.2")
2021
api("com.icegreen:greenmail:2.0.1")
2122
api("com.icegreen:greenmail-junit5:2.0.1")
2223
api("com.icegreen:greenmail-spring:2.0.1")
@@ -39,6 +40,7 @@ dependencies {
3940
api("org.apache.santuario:xmlsec:3.0.4")
4041
api("org.apache.wss4j:wss4j-ws-security-dom:2.4.3")
4142
api("org.apache.ws.xmlschema:xmlschema-core:2.3.1")
43+
api("org.apiguardian:apiguardian-api:1.1.2")
4244
api("org.aspectj:aspectjrt:1.9.22")
4345
api("org.aspectj:aspectjweaver:1.9.22")
4446
api("org.assertj:assertj-core:3.25.3")

0 commit comments

Comments
 (0)