downgrade to gradle 8.14.5
CI / build (push) Successful in 2m35s

This commit is contained in:
2026-06-05 17:28:36 +08:00
parent 65525fdd09
commit 6dc946d71b
26 changed files with 227 additions and 27 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ subprojects { subproject ->
java { java {
toolchain { toolchain {
languageVersion = JavaLanguageVersion.of(25) languageVersion = JavaLanguageVersion.of(21)
} }
} }
@@ -26,6 +26,7 @@ import org.gradle.api.plugins.JavaPluginExtension;
import org.gradle.api.plugins.ReportingBasePlugin; import org.gradle.api.plugins.ReportingBasePlugin;
import org.gradle.api.provider.Property; import org.gradle.api.provider.Property;
import org.gradle.api.provider.Provider; import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.Classpath; import org.gradle.api.tasks.Classpath;
import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputFiles; 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; import static net.woggioni.gradle.dependency.export.DependencyExportPlugin.DEPENDENCY_EXPORT_GROUP;
@CacheableTask
public class ExportDependencies extends DefaultTask { public class ExportDependencies extends DefaultTask {
@Getter(onMethod_ = { @Input }) @Getter(onMethod_ = { @Input })
@@ -4,12 +4,6 @@ plugins {
group = "net.woggioni.finalguard" group = "net.woggioni.finalguard"
java {
toolchain {
languageVersion = JavaLanguageVersion.of(25)
}
}
java { java {
sourceCompatibility(JavaVersion.VERSION_1_8.toString()) sourceCompatibility(JavaVersion.VERSION_1_8.toString())
targetCompatibility(JavaVersion.VERSION_1_8.toString()) targetCompatibility(JavaVersion.VERSION_1_8.toString())
@@ -21,12 +21,12 @@ import com.sun.source.util.TaskListener;
import com.sun.source.util.TreePath; import com.sun.source.util.TreePath;
import com.sun.source.util.TreePathScanner; import com.sun.source.util.TreePathScanner;
import com.sun.source.util.Trees; import com.sun.source.util.Trees;
import com.sun.tools.javac.tree.JCTree;
import com.sun.tools.javac.tree.TreeInfo;
import javax.lang.model.element.Element; import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.Modifier; import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
import javax.lang.model.util.Elements;
import javax.tools.Diagnostic; import javax.tools.Diagnostic;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
@@ -44,8 +44,6 @@ import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.sun.tools.javac.code.Flags.RECORD;
public class FinalGuardPlugin implements Plugin { public class FinalGuardPlugin implements Plugin {
public static final String DEFAULT_LEVEL_KEY = "default.level"; public static final String DEFAULT_LEVEL_KEY = "default.level";
public static final String EXCLUDE_KEY = "exclude"; public static final String EXCLUDE_KEY = "exclude";
@@ -185,6 +183,7 @@ public class FinalGuardPlugin implements Plugin {
private final Configuration configuration; private final Configuration configuration;
private final CompilationUnitTree compilationUnit; private final CompilationUnitTree compilationUnit;
private final Trees trees; private final Trees trees;
private final Elements elements;
private final Map<String, VariableInfo> variableInfoMap = new LinkedHashMap<>(); private final Map<String, VariableInfo> variableInfoMap = new LinkedHashMap<>();
private final Set<String> reassignedVariables = new HashSet<>(); private final Set<String> reassignedVariables = new HashSet<>();
@@ -192,6 +191,7 @@ public class FinalGuardPlugin implements Plugin {
this.configuration = configuration; this.configuration = configuration;
this.compilationUnit = compilationUnit; this.compilationUnit = compilationUnit;
this.trees = Trees.instance(task); this.trees = Trees.instance(task);
this.elements = task.getElements();
} }
@Override @Override
@@ -203,6 +203,8 @@ public class FinalGuardPlugin implements Plugin {
return null; // skip implicit constructor of anonymous class return null; // skip implicit constructor of anonymous class
} }
} }
variableInfoMap.clear();
reassignedVariables.clear();
super.visitMethod(node, p); super.visitMethod(node, p);
// Check for variables that could be final // Check for variables that could be final
checkForFinalCandidates(); checkForFinalCandidates();
@@ -232,9 +234,13 @@ public class FinalGuardPlugin implements Plugin {
type = VariableType.ABSTRACT_METHOD_PARAM; type = VariableType.ABSTRACT_METHOD_PARAM;
} else { } else {
type = VariableType.METHOD_PARAM; type = VariableType.METHOD_PARAM;
if (isJava17OrHigher && ((MethodTree) parent).getName().contentEquals("<init>")) { final MethodTree methodTree = (MethodTree) parent;
if(TreeInfo.isCanonicalConstructor((JCTree) parent)) { if (isJava17OrHigher && (methodTree.getName().contentEquals("<init>"))) {
return super.visitVariable(node, p); final TreePath grandParentPath = parentPath.getParentPath();
if(grandParentPath.getLeaf().getKind() == Tree.Kind.RECORD) {
if(RecordUtils.isCanonicalConstructor(trees, elements, (TypeElement) trees.getElement(grandParentPath), parentPath)) {
return super.visitVariable(node, p);
}
} }
} }
} }
@@ -317,5 +323,7 @@ public class FinalGuardPlugin implements Plugin {
final Set<Modifier> modifiers = variableTree.getModifiers().getFlags(); final Set<Modifier> modifiers = variableTree.getModifiers().getFlags();
return modifiers.contains(Modifier.FINAL); return modifiers.contains(Modifier.FINAL);
} }
} }
} }
@@ -0,0 +1,95 @@
package net.woggioni.finalguard;
import com.sun.source.tree.CompilationUnitTree;
import com.sun.source.tree.MethodTree;
import com.sun.source.tree.VariableTree;
import com.sun.source.util.TreePath;
import com.sun.source.util.Trees;
import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.TypeMirror;
import javax.lang.model.util.Elements;
import java.util.List;
public class RecordUtils {
private static class RecordConstructorDetector {
private final Trees trees;
public RecordConstructorDetector(Trees trees) {
this.trees = trees;
}
public enum ConstructorKind {
CANONICAL_FULL, // Record(int x, String y) { ... }
CANONICAL_COMPACT, // Record { ... }
SECONDARY // Record(String s) { this(0, s); }
}
public ConstructorKind detect(TreePath parent, MethodTree method, TypeElement recordType) {
// 1. Verify it's a constructor
if (method.getReturnType() != null || !method.getName().contentEquals("<init>")) {
throw new IllegalArgumentException("Not a constructor: " + method.getName());
}
List<? extends VariableTree> params = method.getParameters();
List<? extends javax.lang.model.element.RecordComponentElement> components =
recordType.getRecordComponents();
// 2. Compact constructor: no explicit parameters
if (params.isEmpty()) {
return ConstructorKind.CANONICAL_COMPACT;
}
// 3. Check if parameters match record components exactly
if (params.size() == components.size()) {
boolean allMatch = true;
for (int i = 0; i < components.size(); i++) {
TypeMirror paramType = trees.getTypeMirror(new TreePath(parent, params.get(i)));
TypeMirror componentType = components.get(i).asType();
if (paramType == null || !paramType.toString().equals(componentType.toString())) {
allMatch = false;
break;
}
}
if (allMatch) {
return ConstructorKind.CANONICAL_FULL;
}
}
// 4. Otherwise it's a secondary constructor
return ConstructorKind.SECONDARY;
}
}
public static boolean isCanonicalConstructor(Trees trees, Elements elements, TypeElement recordType, TreePath method) {
final RecordConstructorDetector.ConstructorKind ctorKind = new RecordConstructorDetector(trees).detect(method, (MethodTree) method.getLeaf(), recordType);
return ctorKind == RecordConstructorDetector.ConstructorKind.CANONICAL_COMPACT || ctorKind == RecordConstructorDetector.ConstructorKind.CANONICAL_FULL;
}
public static boolean isCompactConstructor(Trees trees, Elements elements, TypeElement recordType, TreePath method) {
final RecordConstructorDetector.ConstructorKind ctorKind = new RecordConstructorDetector(trees).detect(method, (MethodTree) method.getLeaf(), recordType);
return ctorKind == RecordConstructorDetector.ConstructorKind.CANONICAL_COMPACT;
}
public static boolean isCanonicalConstructor(Trees trees, Elements elements, TreePath method) {
Element element = trees.getElement(method);
if(element instanceof ExecutableElement) {
return elements.isCanonicalConstructor((ExecutableElement) element);
} else {
return false;
}
}
public static boolean isCompactConstructor(Trees trees, Elements elements, TreePath method) {
Element element = trees.getElement(method);
if(element instanceof ExecutableElement) {
return elements.isCompactConstructor((ExecutableElement) element);
} else {
return false;
}
}
}
@@ -171,6 +171,12 @@ public class PluginTest {
Arrays.asList( Arrays.asList(
METHOD_PARAM.getMessage("a") METHOD_PARAM.getMessage("a")
) )
),
Arguments.of(prefix + "TestCase18.java",
Collections.emptyList()
),
Arguments.of(prefix + "TestCase19.java",
Collections.emptyList()
) )
); );
} }
@@ -1,7 +1,3 @@
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
public record TestCase17(String s) { public record TestCase17(String s) {
TestCase17(double a) { TestCase17(double a) {
this(""); this("");
@@ -0,0 +1,7 @@
import java.util.Set;
public class TestCase18 {
private String name;
private String password;
private Set<Integer> roles;
}
@@ -0,0 +1,49 @@
public class TestCase19 {
private long id;
@java.lang.SuppressWarnings("all")
public TestCase19() {
}
@java.lang.SuppressWarnings("all")
public long getId() {
return this.id;
}
@java.lang.SuppressWarnings("all")
public void setId(final long id) {
this.id = id;
}
@java.lang.Override
@java.lang.SuppressWarnings("all")
public boolean equals(final java.lang.Object o) {
if (o == this) return true;
if (!(o instanceof TestCase19)) return false;
final TestCase19 other = (TestCase19) o;
if (!other.canEqual((java.lang.Object) this)) return false;
if (this.getId() != other.getId()) return false;
return true;
}
@java.lang.SuppressWarnings("all")
protected boolean canEqual(final java.lang.Object other) {
return other instanceof TestCase19;
}
@java.lang.Override
@java.lang.SuppressWarnings("all")
public int hashCode() {
final int PRIME = 59;
int result = 1;
final long $id = this.getId();
result = result * PRIME + (int) ($id >>> 32 ^ $id);
return result;
}
@java.lang.Override
@java.lang.SuppressWarnings("all")
public java.lang.String toString() {
return "TestCase19(id=" + this.getId() + ")";
}
}
@@ -76,7 +76,6 @@ public class FinalGuardPlugin implements Plugin<Project> {
appendOption(xpluginArg, EXCLUDE_KEY, excludedPrefix); appendOption(xpluginArg, EXCLUDE_KEY, excludedPrefix);
} }
options.getCompilerArgs().add(xpluginArg.toString()); options.getCompilerArgs().add(xpluginArg.toString());
options.getAllCompilerArgs().add("-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED");
}); });
}); });
} }
@@ -17,12 +17,15 @@ import org.gradle.api.plugins.JavaPluginExtension;
import org.gradle.api.provider.ListProperty; import org.gradle.api.provider.ListProperty;
import org.gradle.api.provider.Property; import org.gradle.api.provider.Property;
import org.gradle.api.provider.Provider; import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.Classpath; import org.gradle.api.tasks.Classpath;
import org.gradle.api.tasks.Exec; import org.gradle.api.tasks.Exec;
import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputDirectory; import org.gradle.api.tasks.InputDirectory;
import org.gradle.api.tasks.Optional; import org.gradle.api.tasks.Optional;
import org.gradle.api.tasks.OutputDirectory; 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.internal.jvm.JavaModuleDetector;
import org.gradle.jvm.toolchain.JavaInstallationMetadata; import org.gradle.jvm.toolchain.JavaInstallationMetadata;
import org.gradle.jvm.toolchain.JavaLauncher; import org.gradle.jvm.toolchain.JavaLauncher;
@@ -44,6 +47,7 @@ import java.util.function.Consumer;
import static java.util.Optional.ofNullable; import static java.util.Optional.ofNullable;
import static net.woggioni.gradle.graalvm.Constants.GRAALVM_TASK_GROUP; import static net.woggioni.gradle.graalvm.Constants.GRAALVM_TASK_GROUP;
@CacheableTask
public abstract class JlinkTask extends Exec { public abstract class JlinkTask extends Exec {
private final JavaToolchainSpec toolchain; private final JavaToolchainSpec toolchain;
@@ -57,6 +61,7 @@ public abstract class JlinkTask extends Exec {
public abstract Property<FileCollection> getClasspath(); public abstract Property<FileCollection> getClasspath();
@InputDirectory @InputDirectory
@PathSensitive(PathSensitivity.ABSOLUTE)
public abstract DirectoryProperty getGraalVmHome(); public abstract DirectoryProperty getGraalVmHome();
@Input @Input
@@ -11,6 +11,7 @@ import org.gradle.api.plugins.JavaPlugin;
import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.plugins.JavaPluginExtension;
import org.gradle.api.provider.Property; import org.gradle.api.provider.Property;
import org.gradle.api.provider.Provider; import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.JavaExec; import org.gradle.api.tasks.JavaExec;
import org.gradle.api.tasks.OutputDirectory; 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.Constants.GRAALVM_TASK_GROUP;
import static net.woggioni.gradle.graalvm.NativeImagePlugin.NATIVE_IMAGE_CONFIGURATION_FOLDER_NAME; import static net.woggioni.gradle.graalvm.NativeImagePlugin.NATIVE_IMAGE_CONFIGURATION_FOLDER_NAME;
@CacheableTask
public abstract class NativeImageConfigurationTask extends JavaExec { public abstract class NativeImageConfigurationTask extends JavaExec {
@Input @Input
public abstract Property<Boolean> getMergeConfiguration(); public abstract Property<Boolean> getMergeConfiguration();
+3 -3
View File
@@ -1,5 +1,5 @@
lys.catalog.version=2025.12.27 lys.catalog.version=2026.05.27
version.myGradlePlugins=2026.02.23 version.myGradlePlugins=2026.06.07
version.gradle=9.3.1 version.gradle=8.14.5
gitea.maven.url = https://gitea.woggioni.net/api/packages/woggioni/maven gitea.maven.url = https://gitea.woggioni.net/api/packages/woggioni/maven
+1 -1
View File
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.5-all.zip
networkTimeout=10000 networkTimeout=10000
validateDistributionUrl=true validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
@@ -9,19 +9,21 @@ import org.gradle.api.file.FileCollection;
import org.gradle.api.file.ProjectLayout; import org.gradle.api.file.ProjectLayout;
import org.gradle.api.logging.Logger; import org.gradle.api.logging.Logger;
import org.gradle.api.logging.Logging; import org.gradle.api.logging.Logging;
import org.gradle.api.plugins.BasePluginExtension;
import org.gradle.api.plugins.ExtensionContainer; import org.gradle.api.plugins.ExtensionContainer;
import org.gradle.api.plugins.JavaApplication; import org.gradle.api.plugins.JavaApplication;
import org.gradle.api.provider.ListProperty; import org.gradle.api.provider.ListProperty;
import org.gradle.api.provider.Property; import org.gradle.api.provider.Property;
import org.gradle.api.provider.Provider; import org.gradle.api.provider.Provider;
import org.gradle.api.reporting.ReportingExtension; import org.gradle.api.reporting.ReportingExtension;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.Classpath; import org.gradle.api.tasks.Classpath;
import org.gradle.api.tasks.Exec; import org.gradle.api.tasks.Exec;
import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputDirectory; import org.gradle.api.tasks.InputDirectory;
import org.gradle.api.tasks.Optional; import org.gradle.api.tasks.Optional;
import org.gradle.api.tasks.OutputDirectory; 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.internal.jvm.JavaModuleDetector;
import org.gradle.jvm.toolchain.JavaToolchainService; import org.gradle.jvm.toolchain.JavaToolchainService;
import org.gradle.jvm.toolchain.JavaToolchainSpec; import org.gradle.jvm.toolchain.JavaToolchainSpec;
@@ -42,6 +44,7 @@ import java.util.function.Consumer;
import static java.util.Optional.ofNullable; import static java.util.Optional.ofNullable;
import static net.woggioni.gradle.jdeps.Constants.JDEPS_TASK_GROUP; import static net.woggioni.gradle.jdeps.Constants.JDEPS_TASK_GROUP;
@CacheableTask
public abstract class JdepsTask extends Exec { public abstract class JdepsTask extends Exec {
private final JavaToolchainSpec toolchain; private final JavaToolchainSpec toolchain;
@@ -58,6 +61,7 @@ public abstract class JdepsTask extends Exec {
public abstract Property<FileCollection> getArchives(); public abstract Property<FileCollection> getArchives();
@InputDirectory @InputDirectory
@PathSensitive(PathSensitivity.ABSOLUTE)
public abstract DirectoryProperty getJavaHome(); public abstract DirectoryProperty getJavaHome();
@Input @Input
@@ -11,9 +11,11 @@ import org.gradle.api.artifacts.Configuration
import org.gradle.api.artifacts.result.ResolvedArtifactResult import org.gradle.api.artifacts.result.ResolvedArtifactResult
import org.gradle.api.file.RegularFileProperty import org.gradle.api.file.RegularFileProperty
import org.gradle.api.provider.Property import org.gradle.api.provider.Property
import org.gradle.api.tasks.CacheableTask
import org.gradle.api.tasks.Input import org.gradle.api.tasks.Input
import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.TaskAction
import org.gradle.work.DisableCachingByDefault
import java.nio.file.Files import java.nio.file.Files
import java.nio.file.Path import java.nio.file.Path
@@ -22,6 +24,7 @@ import java.util.stream.Collectors
import java.util.stream.Stream import java.util.stream.Stream
import java.util.zip.ZipFile import java.util.zip.ZipFile
@DisableCachingByDefault
abstract class JPMSCheckTask extends DefaultTask { abstract class JPMSCheckTask extends DefaultTask {
@Input @Input
@@ -7,10 +7,13 @@ import org.gradle.api.file.RegularFileProperty;
import org.gradle.api.file.SourceDirectorySet; import org.gradle.api.file.SourceDirectorySet;
import org.gradle.api.provider.Property; import org.gradle.api.provider.Property;
import org.gradle.api.provider.Provider; import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.InputFiles; import org.gradle.api.tasks.InputFiles;
import org.gradle.api.tasks.Internal; import org.gradle.api.tasks.Internal;
import org.gradle.api.tasks.JavaExec; import org.gradle.api.tasks.JavaExec;
import org.gradle.api.tasks.OutputDirectory; 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.api.tasks.SourceSet;
import org.gradle.internal.jvm.JavaModuleDetector; import org.gradle.internal.jvm.JavaModuleDetector;
@@ -20,6 +23,7 @@ import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@CacheableTask
@RequiredArgsConstructor(onConstructor_ = {@Inject}) @RequiredArgsConstructor(onConstructor_ = {@Inject})
public abstract class Delombok extends JavaExec { public abstract class Delombok extends JavaExec {
@@ -42,6 +46,7 @@ public abstract class Delombok extends JavaExec {
} }
@InputFiles @InputFiles
@PathSensitive(PathSensitivity.NONE)
public Provider<FileCollection> getSourceClasspath() { public Provider<FileCollection> getSourceClasspath() {
return getSourceSet() return getSourceSet()
.map(SourceSet::getCompileClasspath); .map(SourceSet::getCompileClasspath);
@@ -56,6 +61,7 @@ public abstract class Delombok extends JavaExec {
@OutputDirectory @OutputDirectory
abstract public RegularFileProperty getOutputDir(); abstract public RegularFileProperty getOutputDir();
@InputFiles @InputFiles
@PathSensitive(PathSensitivity.NONE)
public Provider<FileCollection> getInputFiles() { public Provider<FileCollection> getInputFiles() {
return getSourceSet() return getSourceSet()
.map(SourceSet::getAllSource) .map(SourceSet::getAllSource)
@@ -3,6 +3,7 @@ package net.woggioni.gradle.osgi.app;
import aQute.bnd.osgi.Constants; import aQute.bnd.osgi.Constants;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.gradle.api.DefaultTask; import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.OutputFile;
import org.gradle.api.tasks.TaskAction; import org.gradle.api.tasks.TaskAction;
@@ -15,6 +16,7 @@ import java.util.List;
import java.util.jar.Attributes; import java.util.jar.Attributes;
import java.util.jar.JarFile; import java.util.jar.JarFile;
@CacheableTask
public class BundleFileTask extends DefaultTask { public class BundleFileTask extends DefaultTask {
private final File systemBundleFile; private final File systemBundleFile;
@@ -5,6 +5,7 @@ import lombok.SneakyThrows;
import org.gradle.api.DefaultTask; import org.gradle.api.DefaultTask;
import org.gradle.api.model.ObjectFactory; import org.gradle.api.model.ObjectFactory;
import org.gradle.api.provider.MapProperty; import org.gradle.api.provider.MapProperty;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.OutputFile;
import org.gradle.api.tasks.TaskAction; import org.gradle.api.tasks.TaskAction;
@@ -15,6 +16,7 @@ import java.io.Writer;
import java.nio.file.Files; import java.nio.file.Files;
import java.util.Properties; import java.util.Properties;
@CacheableTask
public class FrameworkPropertyFileTask extends DefaultTask { public class FrameworkPropertyFileTask extends DefaultTask {
@OutputFile @OutputFile
@@ -7,7 +7,10 @@ import org.gradle.api.DefaultTask;
import org.gradle.api.GradleException; import org.gradle.api.GradleException;
import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.Configuration;
import org.gradle.api.provider.Provider; import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.InputFiles; 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 org.gradle.api.tasks.TaskAction;
import javax.inject.Inject; import javax.inject.Inject;
@@ -16,10 +19,11 @@ import java.net.URL;
import java.net.URLClassLoader; import java.net.URLClassLoader;
import java.util.Set; import java.util.Set;
@CacheableTask
@RequiredArgsConstructor(onConstructor_ = @Inject) @RequiredArgsConstructor(onConstructor_ = @Inject)
public class FrameworkRuntimeCheck extends DefaultTask { public class FrameworkRuntimeCheck extends DefaultTask {
@Getter(onMethod_ = @InputFiles) @Getter(onMethod_ = {@InputFiles, @PathSensitive(PathSensitivity.NONE)})
private final Provider<Configuration> confProvider; private final Provider<Configuration> confProvider;
@TaskAction @TaskAction
@@ -5,6 +5,7 @@ import lombok.SneakyThrows;
import org.gradle.api.DefaultTask; import org.gradle.api.DefaultTask;
import org.gradle.api.model.ObjectFactory; import org.gradle.api.model.ObjectFactory;
import org.gradle.api.provider.ListProperty; import org.gradle.api.provider.ListProperty;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.OutputFile;
import org.gradle.api.tasks.TaskAction; import org.gradle.api.tasks.TaskAction;
@@ -16,6 +17,7 @@ import java.nio.file.Files;
import java.util.Collections; import java.util.Collections;
import java.util.Properties; import java.util.Properties;
@CacheableTask
public class JavaAgentFileTask extends DefaultTask { public class JavaAgentFileTask extends DefaultTask {
@OutputFile @OutputFile
@@ -7,6 +7,7 @@ import org.gradle.api.model.ObjectFactory;
import org.gradle.api.provider.MapProperty; import org.gradle.api.provider.MapProperty;
import org.gradle.api.provider.Property; import org.gradle.api.provider.Property;
import org.gradle.api.provider.Provider; import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.OutputFile;
import org.gradle.api.tasks.TaskAction; import org.gradle.api.tasks.TaskAction;
@@ -17,6 +18,7 @@ import java.io.Writer;
import java.nio.file.Files; import java.nio.file.Files;
import java.util.Properties; import java.util.Properties;
@CacheableTask
public class PropertyFileTask extends DefaultTask { public class PropertyFileTask extends DefaultTask {
@Getter(onMethod_ = @Input) @Getter(onMethod_ = @Input)
@@ -11,9 +11,12 @@ import org.gradle.api.artifacts.result.ResolvedArtifactResult;
import org.gradle.api.file.FileCollection; import org.gradle.api.file.FileCollection;
import org.gradle.api.model.ObjectFactory; import org.gradle.api.model.ObjectFactory;
import org.gradle.api.provider.ListProperty; import org.gradle.api.provider.ListProperty;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputFiles; import org.gradle.api.tasks.InputFiles;
import org.gradle.api.tasks.OutputFile; 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 org.gradle.api.tasks.TaskAction;
import javax.inject.Inject; 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.isBundle;
import static net.woggioni.gradle.osgi.app.OsgiAppUtils.isJar; import static net.woggioni.gradle.osgi.app.OsgiAppUtils.isJar;
@CacheableTask
public class SystemPackageExtraFileTask extends DefaultTask { public class SystemPackageExtraFileTask extends DefaultTask {
@Getter(onMethod_ = @Input) @Getter(onMethod_ = @Input)
@@ -43,6 +47,7 @@ public class SystemPackageExtraFileTask extends DefaultTask {
} }
@InputFiles @InputFiles
@PathSensitive(PathSensitivity.NONE)
FileCollection getInputFiles() { FileCollection getInputFiles() {
return getProject().getConfigurations().getByName("systemPackages"); return getProject().getConfigurations().getByName("systemPackages");
} }
@@ -5,6 +5,7 @@ import lombok.SneakyThrows;
import org.gradle.api.DefaultTask; import org.gradle.api.DefaultTask;
import org.gradle.api.model.ObjectFactory; import org.gradle.api.model.ObjectFactory;
import org.gradle.api.provider.MapProperty; import org.gradle.api.provider.MapProperty;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.OutputFile;
import org.gradle.api.tasks.TaskAction; import org.gradle.api.tasks.TaskAction;
@@ -15,6 +16,7 @@ import java.io.Writer;
import java.nio.file.Files; import java.nio.file.Files;
import java.util.Properties; import java.util.Properties;
@CacheableTask
public class SystemPropertyFileTask extends DefaultTask { public class SystemPropertyFileTask extends DefaultTask {
@OutputFile @OutputFile
@@ -1,7 +1,5 @@
package net.woggioni.gradle.sambal; 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.DefaultTask;
import org.gradle.api.file.DirectoryProperty; import org.gradle.api.file.DirectoryProperty;
import org.gradle.api.file.RegularFile; 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.MapProperty;
import org.gradle.api.provider.Property; import org.gradle.api.provider.Property;
import org.gradle.api.provider.Provider; import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputFile; import org.gradle.api.tasks.InputFile;
import org.gradle.api.tasks.Optional; import org.gradle.api.tasks.Optional;
@@ -23,6 +22,7 @@ import java.io.File;
import java.util.Map; import java.util.Map;
import java.util.TreeMap; import java.util.TreeMap;
@CacheableTask
abstract class SignJarTask extends DefaultTask { abstract class SignJarTask extends DefaultTask {
@InputFile @InputFile
public abstract RegularFileProperty getInputJarFile(); public abstract RegularFileProperty getInputJarFile();
@@ -3,13 +3,17 @@ package net.woggioni.gradle.wildfly;
import org.gradle.api.file.RegularFileProperty; import org.gradle.api.file.RegularFileProperty;
import org.gradle.api.provider.Property; import org.gradle.api.provider.Property;
import org.gradle.api.provider.Provider; import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.Exec; import org.gradle.api.tasks.Exec;
import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputFile; import org.gradle.api.tasks.InputFile;
import org.gradle.api.tasks.PathSensitive;
import org.gradle.api.tasks.PathSensitivity;
import javax.inject.Inject; import javax.inject.Inject;
import java.util.Arrays; import java.util.Arrays;
@CacheableTask
public abstract class Deploy2WildflyTask extends Exec { public abstract class Deploy2WildflyTask extends Exec {
private static final String PROPERTY_PREFIX = "net.woggioni.gradle.wildfly."; private static final String PROPERTY_PREFIX = "net.woggioni.gradle.wildfly.";
private static final String HOST_PROPERTY_KEY = PROPERTY_PREFIX + "rpcHost"; private static final String HOST_PROPERTY_KEY = PROPERTY_PREFIX + "rpcHost";
@@ -32,6 +36,7 @@ public abstract class Deploy2WildflyTask extends Exec {
public abstract Property<String> getDeploymentName(); public abstract Property<String> getDeploymentName();
@InputFile @InputFile
@PathSensitive(PathSensitivity.NONE)
public abstract RegularFileProperty getArtifact(); public abstract RegularFileProperty getArtifact();
private String projectProperty(String key, String defaultValue) { private String projectProperty(String key, String defaultValue) {