diff --git a/dependency-export/src/main/java/net/woggioni/gradle/dependency/export/ExportDependencies.java b/dependency-export/src/main/java/net/woggioni/gradle/dependency/export/ExportDependencies.java index 66d30ec..ed972af 100644 --- a/dependency-export/src/main/java/net/woggioni/gradle/dependency/export/ExportDependencies.java +++ b/dependency-export/src/main/java/net/woggioni/gradle/dependency/export/ExportDependencies.java @@ -26,6 +26,7 @@ import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.plugins.ReportingBasePlugin; import org.gradle.api.provider.Property; import org.gradle.api.provider.Provider; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.Classpath; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.InputFiles; @@ -54,6 +55,7 @@ import java.util.stream.Stream; import static net.woggioni.gradle.dependency.export.DependencyExportPlugin.DEPENDENCY_EXPORT_GROUP; +@CacheableTask public class ExportDependencies extends DefaultTask { @Getter(onMethod_ = { @Input }) 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 69fd857..ba900cc 100644 --- a/finalguard/src/main/java/net/woggioni/gradle/finalguard/FinalGuardPlugin.java +++ b/finalguard/src/main/java/net/woggioni/gradle/finalguard/FinalGuardPlugin.java @@ -76,7 +76,7 @@ public class FinalGuardPlugin implements Plugin { appendOption(xpluginArg, EXCLUDE_KEY, excludedPrefix); } options.getCompilerArgs().add(xpluginArg.toString()); - options.getAllCompilerArgs().add("-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED"); + options.getCompilerArgs().add("-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED"); }); }); } diff --git a/graalvm/src/main/java/net/woggioni/gradle/graalvm/JlinkTask.java b/graalvm/src/main/java/net/woggioni/gradle/graalvm/JlinkTask.java index ff7dbd1..06db5e1 100644 --- a/graalvm/src/main/java/net/woggioni/gradle/graalvm/JlinkTask.java +++ b/graalvm/src/main/java/net/woggioni/gradle/graalvm/JlinkTask.java @@ -17,12 +17,15 @@ import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.provider.ListProperty; import org.gradle.api.provider.Property; import org.gradle.api.provider.Provider; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.Classpath; import org.gradle.api.tasks.Exec; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.InputDirectory; import org.gradle.api.tasks.Optional; import org.gradle.api.tasks.OutputDirectory; +import org.gradle.api.tasks.PathSensitive; +import org.gradle.api.tasks.PathSensitivity; import org.gradle.internal.jvm.JavaModuleDetector; import org.gradle.jvm.toolchain.JavaInstallationMetadata; import org.gradle.jvm.toolchain.JavaLauncher; @@ -44,6 +47,7 @@ import java.util.function.Consumer; import static java.util.Optional.ofNullable; import static net.woggioni.gradle.graalvm.Constants.GRAALVM_TASK_GROUP; +@CacheableTask public abstract class JlinkTask extends Exec { private final JavaToolchainSpec toolchain; @@ -57,6 +61,7 @@ public abstract class JlinkTask extends Exec { public abstract Property getClasspath(); @InputDirectory + @PathSensitive(PathSensitivity.ABSOLUTE) public abstract DirectoryProperty getGraalVmHome(); @Input diff --git a/graalvm/src/main/java/net/woggioni/gradle/graalvm/NativeImageConfigurationTask.java b/graalvm/src/main/java/net/woggioni/gradle/graalvm/NativeImageConfigurationTask.java index 5cd9389..9279f80 100644 --- a/graalvm/src/main/java/net/woggioni/gradle/graalvm/NativeImageConfigurationTask.java +++ b/graalvm/src/main/java/net/woggioni/gradle/graalvm/NativeImageConfigurationTask.java @@ -11,6 +11,7 @@ import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.provider.Property; import org.gradle.api.provider.Provider; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.JavaExec; import org.gradle.api.tasks.OutputDirectory; @@ -31,6 +32,7 @@ import java.util.Optional; import static net.woggioni.gradle.graalvm.Constants.GRAALVM_TASK_GROUP; import static net.woggioni.gradle.graalvm.NativeImagePlugin.NATIVE_IMAGE_CONFIGURATION_FOLDER_NAME; +@CacheableTask public abstract class NativeImageConfigurationTask extends JavaExec { @Input public abstract Property getMergeConfiguration(); diff --git a/gradle.properties b/gradle.properties index 97b0dee..ff82b93 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ -lys.catalog.version=2025.12.27 -version.myGradlePlugins=2026.02.23 +lys.catalog.version=2026.05.27 +version.myGradlePlugins=2026.06.05 version.gradle=9.3.1 gitea.maven.url = https://gitea.woggioni.net/api/packages/woggioni/maven diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5f38436..317a32c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/jdeps/src/main/java/net/woggioni/gradle/jdeps/JdepsTask.java b/jdeps/src/main/java/net/woggioni/gradle/jdeps/JdepsTask.java index 6ede0ce..de81402 100644 --- a/jdeps/src/main/java/net/woggioni/gradle/jdeps/JdepsTask.java +++ b/jdeps/src/main/java/net/woggioni/gradle/jdeps/JdepsTask.java @@ -9,19 +9,21 @@ import org.gradle.api.file.FileCollection; import org.gradle.api.file.ProjectLayout; import org.gradle.api.logging.Logger; import org.gradle.api.logging.Logging; -import org.gradle.api.plugins.BasePluginExtension; import org.gradle.api.plugins.ExtensionContainer; import org.gradle.api.plugins.JavaApplication; import org.gradle.api.provider.ListProperty; import org.gradle.api.provider.Property; import org.gradle.api.provider.Provider; import org.gradle.api.reporting.ReportingExtension; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.Classpath; import org.gradle.api.tasks.Exec; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.InputDirectory; import org.gradle.api.tasks.Optional; import org.gradle.api.tasks.OutputDirectory; +import org.gradle.api.tasks.PathSensitive; +import org.gradle.api.tasks.PathSensitivity; import org.gradle.internal.jvm.JavaModuleDetector; import org.gradle.jvm.toolchain.JavaToolchainService; import org.gradle.jvm.toolchain.JavaToolchainSpec; @@ -42,6 +44,7 @@ import java.util.function.Consumer; import static java.util.Optional.ofNullable; import static net.woggioni.gradle.jdeps.Constants.JDEPS_TASK_GROUP; +@CacheableTask public abstract class JdepsTask extends Exec { private final JavaToolchainSpec toolchain; @@ -58,6 +61,7 @@ public abstract class JdepsTask extends Exec { public abstract Property getArchives(); @InputDirectory + @PathSensitive(PathSensitivity.ABSOLUTE) public abstract DirectoryProperty getJavaHome(); @Input diff --git a/jpms-check/src/main/groovy/net/woggioni/gradle/jpms/check/JPMSCheckTask.groovy b/jpms-check/src/main/groovy/net/woggioni/gradle/jpms/check/JPMSCheckTask.groovy index 0aa7511..bcc5c7f 100644 --- a/jpms-check/src/main/groovy/net/woggioni/gradle/jpms/check/JPMSCheckTask.groovy +++ b/jpms-check/src/main/groovy/net/woggioni/gradle/jpms/check/JPMSCheckTask.groovy @@ -11,9 +11,11 @@ import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.result.ResolvedArtifactResult import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.Property +import org.gradle.api.tasks.CacheableTask import org.gradle.api.tasks.Input import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.TaskAction +import org.gradle.work.DisableCachingByDefault import java.nio.file.Files import java.nio.file.Path @@ -22,6 +24,7 @@ import java.util.stream.Collectors import java.util.stream.Stream import java.util.zip.ZipFile +@DisableCachingByDefault abstract class JPMSCheckTask extends DefaultTask { @Input diff --git a/lombok/src/main/java/net/woggioni/gradle/lombok/Delombok.java b/lombok/src/main/java/net/woggioni/gradle/lombok/Delombok.java index 9be9925..52a6bb4 100644 --- a/lombok/src/main/java/net/woggioni/gradle/lombok/Delombok.java +++ b/lombok/src/main/java/net/woggioni/gradle/lombok/Delombok.java @@ -7,10 +7,13 @@ import org.gradle.api.file.RegularFileProperty; import org.gradle.api.file.SourceDirectorySet; import org.gradle.api.provider.Property; import org.gradle.api.provider.Provider; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.InputFiles; import org.gradle.api.tasks.Internal; import org.gradle.api.tasks.JavaExec; import org.gradle.api.tasks.OutputDirectory; +import org.gradle.api.tasks.PathSensitive; +import org.gradle.api.tasks.PathSensitivity; import org.gradle.api.tasks.SourceSet; import org.gradle.internal.jvm.JavaModuleDetector; @@ -20,6 +23,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +@CacheableTask @RequiredArgsConstructor(onConstructor_ = {@Inject}) public abstract class Delombok extends JavaExec { @@ -42,6 +46,7 @@ public abstract class Delombok extends JavaExec { } @InputFiles + @PathSensitive(PathSensitivity.NONE) public Provider getSourceClasspath() { return getSourceSet() .map(SourceSet::getCompileClasspath); @@ -56,6 +61,7 @@ public abstract class Delombok extends JavaExec { @OutputDirectory abstract public RegularFileProperty getOutputDir(); @InputFiles + @PathSensitive(PathSensitivity.NONE) public Provider getInputFiles() { return getSourceSet() .map(SourceSet::getAllSource) diff --git a/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/BundleFileTask.java b/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/BundleFileTask.java index 19ef933..94ca3e0 100644 --- a/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/BundleFileTask.java +++ b/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/BundleFileTask.java @@ -3,6 +3,7 @@ package net.woggioni.gradle.osgi.app; import aQute.bnd.osgi.Constants; import lombok.SneakyThrows; import org.gradle.api.DefaultTask; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.TaskAction; @@ -15,6 +16,7 @@ import java.util.List; import java.util.jar.Attributes; import java.util.jar.JarFile; +@CacheableTask public class BundleFileTask extends DefaultTask { private final File systemBundleFile; diff --git a/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/FrameworkPropertyFileTask.java b/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/FrameworkPropertyFileTask.java index ae03f1c..848d1b3 100644 --- a/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/FrameworkPropertyFileTask.java +++ b/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/FrameworkPropertyFileTask.java @@ -5,6 +5,7 @@ import lombok.SneakyThrows; import org.gradle.api.DefaultTask; import org.gradle.api.model.ObjectFactory; import org.gradle.api.provider.MapProperty; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.TaskAction; @@ -15,6 +16,7 @@ import java.io.Writer; import java.nio.file.Files; import java.util.Properties; +@CacheableTask public class FrameworkPropertyFileTask extends DefaultTask { @OutputFile diff --git a/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/FrameworkRuntimeCheck.java b/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/FrameworkRuntimeCheck.java index b44028d..ee67a5a 100644 --- a/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/FrameworkRuntimeCheck.java +++ b/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/FrameworkRuntimeCheck.java @@ -7,7 +7,10 @@ import org.gradle.api.DefaultTask; import org.gradle.api.GradleException; import org.gradle.api.artifacts.Configuration; import org.gradle.api.provider.Provider; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.InputFiles; +import org.gradle.api.tasks.PathSensitive; +import org.gradle.api.tasks.PathSensitivity; import org.gradle.api.tasks.TaskAction; import javax.inject.Inject; @@ -16,10 +19,11 @@ import java.net.URL; import java.net.URLClassLoader; import java.util.Set; +@CacheableTask @RequiredArgsConstructor(onConstructor_ = @Inject) public class FrameworkRuntimeCheck extends DefaultTask { - @Getter(onMethod_ = @InputFiles) + @Getter(onMethod_ = {@InputFiles, @PathSensitive(PathSensitivity.NONE)}) private final Provider confProvider; @TaskAction diff --git a/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/JavaAgentFileTask.java b/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/JavaAgentFileTask.java index 8f7f93b..04dbbb1 100644 --- a/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/JavaAgentFileTask.java +++ b/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/JavaAgentFileTask.java @@ -5,6 +5,7 @@ import lombok.SneakyThrows; import org.gradle.api.DefaultTask; import org.gradle.api.model.ObjectFactory; import org.gradle.api.provider.ListProperty; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.TaskAction; @@ -16,6 +17,7 @@ import java.nio.file.Files; import java.util.Collections; import java.util.Properties; +@CacheableTask public class JavaAgentFileTask extends DefaultTask { @OutputFile diff --git a/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/PropertyFileTask.java b/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/PropertyFileTask.java index 8fd6906..04f7a7c 100644 --- a/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/PropertyFileTask.java +++ b/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/PropertyFileTask.java @@ -7,6 +7,7 @@ import org.gradle.api.model.ObjectFactory; import org.gradle.api.provider.MapProperty; import org.gradle.api.provider.Property; import org.gradle.api.provider.Provider; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.TaskAction; @@ -17,6 +18,7 @@ import java.io.Writer; import java.nio.file.Files; import java.util.Properties; +@CacheableTask public class PropertyFileTask extends DefaultTask { @Getter(onMethod_ = @Input) diff --git a/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/SystemPackageExtraFileTask.java b/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/SystemPackageExtraFileTask.java index 8fefc79..cd1876f 100644 --- a/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/SystemPackageExtraFileTask.java +++ b/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/SystemPackageExtraFileTask.java @@ -11,9 +11,12 @@ import org.gradle.api.artifacts.result.ResolvedArtifactResult; import org.gradle.api.file.FileCollection; import org.gradle.api.model.ObjectFactory; import org.gradle.api.provider.ListProperty; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.InputFiles; import org.gradle.api.tasks.OutputFile; +import org.gradle.api.tasks.PathSensitive; +import org.gradle.api.tasks.PathSensitivity; import org.gradle.api.tasks.TaskAction; import javax.inject.Inject; @@ -29,6 +32,7 @@ import java.util.jar.JarFile; import static net.woggioni.gradle.osgi.app.OsgiAppUtils.isBundle; import static net.woggioni.gradle.osgi.app.OsgiAppUtils.isJar; +@CacheableTask public class SystemPackageExtraFileTask extends DefaultTask { @Getter(onMethod_ = @Input) @@ -43,6 +47,7 @@ public class SystemPackageExtraFileTask extends DefaultTask { } @InputFiles + @PathSensitive(PathSensitivity.NONE) FileCollection getInputFiles() { return getProject().getConfigurations().getByName("systemPackages"); } diff --git a/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/SystemPropertyFileTask.java b/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/SystemPropertyFileTask.java index 2fe0f0c..c37e6fd 100644 --- a/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/SystemPropertyFileTask.java +++ b/osgi-app/src/main/java/net/woggioni/gradle/osgi/app/SystemPropertyFileTask.java @@ -5,6 +5,7 @@ import lombok.SneakyThrows; import org.gradle.api.DefaultTask; import org.gradle.api.model.ObjectFactory; import org.gradle.api.provider.MapProperty; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.TaskAction; @@ -15,6 +16,7 @@ import java.io.Writer; import java.nio.file.Files; import java.util.Properties; +@CacheableTask public class SystemPropertyFileTask extends DefaultTask { @OutputFile diff --git a/sambal/src/main/java/net/woggioni/gradle/sambal/SignJarTask.java b/sambal/src/main/java/net/woggioni/gradle/sambal/SignJarTask.java index 5dcf14f..c9fcaed 100644 --- a/sambal/src/main/java/net/woggioni/gradle/sambal/SignJarTask.java +++ b/sambal/src/main/java/net/woggioni/gradle/sambal/SignJarTask.java @@ -1,7 +1,5 @@ package net.woggioni.gradle.sambal; -import org.codehaus.groovy.ant.Groovy; -import org.codehaus.groovy.util.StringUtil; import org.gradle.api.DefaultTask; import org.gradle.api.file.DirectoryProperty; import org.gradle.api.file.RegularFile; @@ -11,6 +9,7 @@ import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.provider.MapProperty; import org.gradle.api.provider.Property; import org.gradle.api.provider.Provider; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.InputFile; import org.gradle.api.tasks.Optional; @@ -23,6 +22,7 @@ import java.io.File; import java.util.Map; import java.util.TreeMap; +@CacheableTask abstract class SignJarTask extends DefaultTask { @InputFile public abstract RegularFileProperty getInputJarFile(); diff --git a/wildfly/src/main/java/net/woggioni/gradle/wildfly/Deploy2WildflyTask.java b/wildfly/src/main/java/net/woggioni/gradle/wildfly/Deploy2WildflyTask.java index 660883f..4fae1b6 100644 --- a/wildfly/src/main/java/net/woggioni/gradle/wildfly/Deploy2WildflyTask.java +++ b/wildfly/src/main/java/net/woggioni/gradle/wildfly/Deploy2WildflyTask.java @@ -3,13 +3,17 @@ package net.woggioni.gradle.wildfly; import org.gradle.api.file.RegularFileProperty; import org.gradle.api.provider.Property; import org.gradle.api.provider.Provider; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.Exec; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.InputFile; +import org.gradle.api.tasks.PathSensitive; +import org.gradle.api.tasks.PathSensitivity; import javax.inject.Inject; import java.util.Arrays; +@CacheableTask public abstract class Deploy2WildflyTask extends Exec { private static final String PROPERTY_PREFIX = "net.woggioni.gradle.wildfly."; private static final String HOST_PROPERTY_KEY = PROPERTY_PREFIX + "rpcHost"; @@ -32,6 +36,7 @@ public abstract class Deploy2WildflyTask extends Exec { public abstract Property getDeploymentName(); @InputFile + @PathSensitive(PathSensitivity.NONE) public abstract RegularFileProperty getArtifact(); private String projectProperty(String key, String defaultValue) {