diff --git a/finalguard/src/main/java/net/woggioni/gradle/finalguard/FinalGuardPlugin.java b/finalguard/src/main/java/net/woggioni/gradle/finalguard/FinalGuardPlugin.java index 1aeefd2..0672c92 100644 --- a/finalguard/src/main/java/net/woggioni/gradle/finalguard/FinalGuardPlugin.java +++ b/finalguard/src/main/java/net/woggioni/gradle/finalguard/FinalGuardPlugin.java @@ -15,11 +15,13 @@ import org.gradle.api.tasks.compile.JavaCompile; import javax.tools.Diagnostic; import java.net.URL; +import java.util.function.BiConsumer; import java.util.jar.Attributes; import java.util.jar.Manifest; public class FinalGuardPlugin implements Plugin { private static final String FINALGUARD_PLUGIN_CONFIGURATION = "finalguard_plugin"; + private static final String PROPERTY_PREFIX = "net.woggioni.finalguard.diagnostic."; @Override public void apply(final Project project) { @@ -52,54 +54,59 @@ public class FinalGuardPlugin implements Plugin { tasks.withType(JavaCompile.class, javaCompileTask -> { javaCompileTask.doFirst(t -> { final CompileOptions options = javaCompileTask.getOptions(); + final BiConsumer setProperty = (key, diagnosticKind) -> { + final String propertyKey = PROPERTY_PREFIX + key; + System.setProperty(propertyKey, diagnosticKind.toString()); + options.getForkOptions().getJvmArgs().add(String.format("-D%s=%s", propertyKey, diagnosticKind)); + }; options.setAnnotationProcessorPath(options.getAnnotationProcessorPath().plus(javacPluginConfiguration)); { final Property defaultLevel = finalGuardExtension.getDefaultLevel(); if (defaultLevel.isPresent()) { final Diagnostic.Kind diagnosticKind = defaultLevel.get(); - options.getForkOptions().getJvmArgs().add("-Dnet.woggioni.finalguard.diagnostic.level=" + diagnosticKind); + setProperty.accept("level", diagnosticKind); } } { final Property localVariableLevel = finalGuardExtension.getLocalVariableLevel(); if (localVariableLevel.isPresent()) { final Diagnostic.Kind diagnosticKind = localVariableLevel.get(); - options.getForkOptions().getJvmArgs().add("-Dnet.woggioni.finalguard.diagnostic.local.variable.level=" + diagnosticKind); + setProperty.accept("local.variable.level", diagnosticKind); } } { final Property methodParameterLevel = finalGuardExtension.getMethodParameterLevel(); if (methodParameterLevel.isPresent()) { final Diagnostic.Kind diagnosticKind = methodParameterLevel.get(); - options.getForkOptions().getJvmArgs().add("-Dnet.woggioni.finalguard.diagnostic.method.param.level=" + diagnosticKind); + setProperty.accept("method.param.level", diagnosticKind); } } { final Property forLoopParameterLevel = finalGuardExtension.getForLoopParameterLevel(); if (forLoopParameterLevel.isPresent()) { final Diagnostic.Kind diagnosticKind = forLoopParameterLevel.get(); - options.getForkOptions().getJvmArgs().add("-Dnet.woggioni.finalguard.diagnostic.for.param.level=" + diagnosticKind); + setProperty.accept("for.param.level", diagnosticKind); } } { final Property tryParameterLevel = finalGuardExtension.getTryWithResourceLevel(); if (tryParameterLevel.isPresent()) { final Diagnostic.Kind diagnosticKind = tryParameterLevel.get(); - options.getForkOptions().getJvmArgs().add("-Dnet.woggioni.finalguard.diagnostic.try.param.level=" + diagnosticKind); + setProperty.accept("try.param.level", diagnosticKind); } } { final Property catchParameterLevel = finalGuardExtension.getCatchParameterLevel(); if (catchParameterLevel.isPresent()) { final Diagnostic.Kind diagnosticKind = catchParameterLevel.get(); - options.getForkOptions().getJvmArgs().add("-Dnet.woggioni.finalguard.diagnostic.catch.param.level=" + diagnosticKind); + setProperty.accept("catch.param.level", diagnosticKind); } } { final Property lambdaParameterLevel = finalGuardExtension.getLambdaParameterLevel(); if (lambdaParameterLevel.isPresent()) { final Diagnostic.Kind diagnosticKind = lambdaParameterLevel.get(); - options.getForkOptions().getJvmArgs().add("-Dnet.woggioni.finalguard.diagnostic.lambda.param.level=" + diagnosticKind); + setProperty.accept("lambda.param.level", diagnosticKind); } } options.getCompilerArgs().add("-Xplugin:net.woggioni.finalguard.FinalGuardPlugin"); diff --git a/gradle.properties b/gradle.properties index 884b3d0..b6837a2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ lys.catalog.version=2025.11.18 -version.myGradlePlugins=2025.11.19 +version.myGradlePlugins=2025.11.28 version.gradle=8.12 gitea.maven.url = https://gitea.woggioni.net/api/packages/woggioni/maven