diff --git a/gradle/plugins/conventions-plugin/src/main/java/org/springframework/ws/gradle/conventions/JavaPluginConventions.java b/gradle/plugins/conventions-plugin/src/main/java/org/springframework/ws/gradle/conventions/JavaPluginConventions.java index 87f06646..d1031f07 100644 --- a/gradle/plugins/conventions-plugin/src/main/java/org/springframework/ws/gradle/conventions/JavaPluginConventions.java +++ b/gradle/plugins/conventions-plugin/src/main/java/org/springframework/ws/gradle/conventions/JavaPluginConventions.java @@ -16,6 +16,8 @@ package org.springframework.ws.gradle.conventions; +import java.util.Arrays; +import java.util.List; import java.util.Map; import io.spring.javaformat.gradle.SpringJavaFormatPlugin; @@ -28,6 +30,7 @@ import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.bundling.Jar; +import org.gradle.api.tasks.compile.JavaCompile; import org.gradle.api.tasks.testing.Test; import org.gradle.jvm.toolchain.JavaLanguageVersion; @@ -42,6 +45,7 @@ class JavaPluginConventions { void apply(Project project) { project.getPlugins().apply(SpringJavaFormatPlugin.class); + configureJavaConventions(project); JavaPluginExtension java = project.getExtensions().getByType(JavaPluginExtension.class); enableSourceAndJavadocJars(java); configureSourceAndTargetCompatibility(java); @@ -52,7 +56,22 @@ class JavaPluginConventions { configureJUnitPlatform(project); } - + private void configureJavaConventions(Project project) { + project.getTasks().withType(JavaCompile.class, (compile) -> { + compile.getOptions().setEncoding("UTF-8"); + List args = compile.getOptions().getCompilerArgs(); + if (!args.contains("-parameters")) { + args.add("-parameters"); + } + boolean buildWithJava17 = !project.hasProperty("toolchainVersion") + && JavaVersion.current() == JavaVersion.VERSION_17; + if (buildWithJava17) { + args.addAll(Arrays.asList("-Werror", "-Xlint:unchecked", "-Xlint:deprecation", "-Xlint:rawtypes", + "-Xlint:varargs")); + } + }); + project.getDependencies().add("compileOnly", "com.google.code.findbugs:jsr305"); + } private void enableSourceAndJavadocJars(JavaPluginExtension java) { java.withSourcesJar(); @@ -106,6 +125,7 @@ class JavaPluginConventions { private void configureJUnitPlatform(Project project) { project.getTasks().withType(Test.class).configureEach((task) -> task.useJUnitPlatform()); + project.getDependencies().add("testImplementation", "org.apiguardian:apiguardian-api"); project.getDependencies().add("testRuntimeOnly", "org.junit.platform:junit-platform-launcher"); } diff --git a/spring-ws-platform/build.gradle b/spring-ws-platform/build.gradle index 9b87e140..a85f4ab5 100644 --- a/spring-ws-platform/build.gradle +++ b/spring-ws-platform/build.gradle @@ -17,6 +17,7 @@ dependencies { api(platform("org.springframework.security:spring-security-bom:6.3.9-SNAPSHOT")) constraints { api("com.fasterxml.woodstox:woodstox-core:6.5.1") + api("com.google.code.findbugs:jsr305:3.0.2") api("com.icegreen:greenmail:2.0.1") api("com.icegreen:greenmail-junit5:2.0.1") api("com.icegreen:greenmail-spring:2.0.1") @@ -39,6 +40,7 @@ dependencies { api("org.apache.santuario:xmlsec:3.0.4") api("org.apache.wss4j:wss4j-ws-security-dom:2.4.3") api("org.apache.ws.xmlschema:xmlschema-core:2.3.1") + api("org.apiguardian:apiguardian-api:1.1.2") api("org.aspectj:aspectjrt:1.9.22") api("org.aspectj:aspectjweaver:1.9.22") api("org.assertj:assertj-core:3.25.3")