Compare commits

..
1 Commits
Author SHA1 Message Date
woggioni c1e3e960b1 tmp 2026-06-05 09:27:32 +08:00
23 changed files with 12 additions and 110 deletions
@@ -26,7 +26,6 @@ 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;
@@ -55,7 +54,6 @@ 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 })
@@ -39,7 +39,6 @@ test {
sourceSets["test"].resources.srcDirs
systemProperty("test.compilation.classpath",
String.join(File.pathSeparator, testCompilationClassPath.collect { it.toString() }))
jvmArgs('--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED')
}
@@ -21,8 +21,6 @@ import com.sun.source.util.TaskListener;
import com.sun.source.util.TreePath;
import com.sun.source.util.TreePathScanner;
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.ExecutableElement;
@@ -44,8 +42,6 @@ import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import static com.sun.tools.javac.code.Flags.RECORD;
public class FinalGuardPlugin implements Plugin {
public static final String DEFAULT_LEVEL_KEY = "default.level";
public static final String EXCLUDE_KEY = "exclude";
@@ -196,18 +192,11 @@ public class FinalGuardPlugin implements Plugin {
@Override
public Void visitMethod(MethodTree node, Void p) {
if (node.getName().contentEquals("<init>")) {
TreePath classPath = getCurrentPath().getParentPath();
if (classPath != null && classPath.getParentPath() != null
&& classPath.getParentPath().getLeaf().getKind() == Tree.Kind.NEW_CLASS) {
return null; // skip implicit constructor of anonymous class
}
}
variableInfoMap.clear();
reassignedVariables.clear();
super.visitMethod(node, p);
// Check for variables that could be final
checkForFinalCandidates();
variableInfoMap.clear();
reassignedVariables.clear();
return null;
}
@@ -233,7 +222,8 @@ public class FinalGuardPlugin implements Plugin {
} else {
type = VariableType.METHOD_PARAM;
if (isJava17OrHigher && ((MethodTree) parent).getName().contentEquals("<init>")) {
if(TreeInfo.isCanonicalConstructor((JCTree) parent)) {
final TreePath grandParentPath = parentPath.getParentPath();
if (grandParentPath.getLeaf().getKind() == Tree.Kind.RECORD) {
return super.visitVariable(node, p);
}
}
@@ -158,20 +158,7 @@ public class PluginTest {
Arguments.of(prefix + "TestCase15.java",
Arrays.asList(
LOCAL_VAR.getMessage("a"),
METHOD_PARAM.getMessage("source"))),
Arguments.of(prefix + "TestCase16.java",
Arrays.asList(
METHOD_PARAM.getMessage("c"),
LOCAL_VAR.getMessage("d"),
METHOD_PARAM.getMessage("e"),
LOCAL_VAR.getMessage("f")
)
),
Arguments.of(prefix + "TestCase17.java",
Arrays.asList(
METHOD_PARAM.getMessage("a")
)
)
METHOD_PARAM.getMessage("source")))
);
}
}
@@ -1,18 +0,0 @@
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
public record TestCase16(double a, double b) {
TestCase16(double c) {
this(c, 2.0);
int d = 42;
System.out.println(d);
}
double foo(double e) {
int f = 42;
System.out.println(f);
return a;
}
}
@@ -1,9 +0,0 @@
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
public record TestCase17(String s) {
TestCase17(double a) {
this("");
}
}
@@ -76,7 +76,6 @@ public class FinalGuardPlugin implements Plugin<Project> {
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");
});
});
}
@@ -17,15 +17,12 @@ 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;
@@ -47,7 +44,6 @@ 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;
@@ -61,7 +57,6 @@ public abstract class JlinkTask extends Exec {
public abstract Property<FileCollection> getClasspath();
@InputDirectory
@PathSensitive(PathSensitivity.ABSOLUTE)
public abstract DirectoryProperty getGraalVmHome();
@Input
@@ -11,7 +11,6 @@ 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;
@@ -32,7 +31,6 @@ 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<Boolean> getMergeConfiguration();
+2 -2
View File
@@ -1,5 +1,5 @@
lys.catalog.version=2026.05.27
version.myGradlePlugins=2026.06.05
lys.catalog.version=2025.12.27
version.myGradlePlugins=2026.02.23
version.gradle=9.3.1
gitea.maven.url = https://gitea.woggioni.net/api/packages/woggioni/maven
+1 -1
View File
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-all.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
@@ -9,21 +9,19 @@ 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;
@@ -44,7 +42,6 @@ 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;
@@ -61,7 +58,6 @@ public abstract class JdepsTask extends Exec {
public abstract Property<FileCollection> getArchives();
@InputDirectory
@PathSensitive(PathSensitivity.ABSOLUTE)
public abstract DirectoryProperty getJavaHome();
@Input
@@ -11,11 +11,9 @@ 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
@@ -24,7 +22,6 @@ import java.util.stream.Collectors
import java.util.stream.Stream
import java.util.zip.ZipFile
@DisableCachingByDefault
abstract class JPMSCheckTask extends DefaultTask {
@Input
@@ -7,13 +7,10 @@ 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;
@@ -23,7 +20,6 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@CacheableTask
@RequiredArgsConstructor(onConstructor_ = {@Inject})
public abstract class Delombok extends JavaExec {
@@ -46,7 +42,6 @@ public abstract class Delombok extends JavaExec {
}
@InputFiles
@PathSensitive(PathSensitivity.NONE)
public Provider<FileCollection> getSourceClasspath() {
return getSourceSet()
.map(SourceSet::getCompileClasspath);
@@ -61,7 +56,6 @@ public abstract class Delombok extends JavaExec {
@OutputDirectory
abstract public RegularFileProperty getOutputDir();
@InputFiles
@PathSensitive(PathSensitivity.NONE)
public Provider<FileCollection> getInputFiles() {
return getSourceSet()
.map(SourceSet::getAllSource)
@@ -3,7 +3,6 @@ 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;
@@ -16,7 +15,6 @@ import java.util.List;
import java.util.jar.Attributes;
import java.util.jar.JarFile;
@CacheableTask
public class BundleFileTask extends DefaultTask {
private final File systemBundleFile;
@@ -5,7 +5,6 @@ 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;
@@ -16,7 +15,6 @@ import java.io.Writer;
import java.nio.file.Files;
import java.util.Properties;
@CacheableTask
public class FrameworkPropertyFileTask extends DefaultTask {
@OutputFile
@@ -7,10 +7,7 @@ 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;
@@ -19,11 +16,10 @@ import java.net.URL;
import java.net.URLClassLoader;
import java.util.Set;
@CacheableTask
@RequiredArgsConstructor(onConstructor_ = @Inject)
public class FrameworkRuntimeCheck extends DefaultTask {
@Getter(onMethod_ = {@InputFiles, @PathSensitive(PathSensitivity.NONE)})
@Getter(onMethod_ = @InputFiles)
private final Provider<Configuration> confProvider;
@TaskAction
@@ -5,7 +5,6 @@ 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;
@@ -17,7 +16,6 @@ import java.nio.file.Files;
import java.util.Collections;
import java.util.Properties;
@CacheableTask
public class JavaAgentFileTask extends DefaultTask {
@OutputFile
@@ -7,7 +7,6 @@ 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;
@@ -18,7 +17,6 @@ import java.io.Writer;
import java.nio.file.Files;
import java.util.Properties;
@CacheableTask
public class PropertyFileTask extends DefaultTask {
@Getter(onMethod_ = @Input)
@@ -11,12 +11,9 @@ 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;
@@ -32,7 +29,6 @@ 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)
@@ -47,7 +43,6 @@ public class SystemPackageExtraFileTask extends DefaultTask {
}
@InputFiles
@PathSensitive(PathSensitivity.NONE)
FileCollection getInputFiles() {
return getProject().getConfigurations().getByName("systemPackages");
}
@@ -5,7 +5,6 @@ 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;
@@ -16,7 +15,6 @@ import java.io.Writer;
import java.nio.file.Files;
import java.util.Properties;
@CacheableTask
public class SystemPropertyFileTask extends DefaultTask {
@OutputFile
@@ -1,5 +1,7 @@
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;
@@ -9,7 +11,6 @@ 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;
@@ -22,7 +23,6 @@ import java.io.File;
import java.util.Map;
import java.util.TreeMap;
@CacheableTask
abstract class SignJarTask extends DefaultTask {
@InputFile
public abstract RegularFileProperty getInputJarFile();
@@ -3,17 +3,13 @@ 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";
@@ -36,7 +32,6 @@ public abstract class Deploy2WildflyTask extends Exec {
public abstract Property<String> getDeploymentName();
@InputFile
@PathSensitive(PathSensitivity.NONE)
public abstract RegularFileProperty getArtifact();
private String projectProperty(String key, String defaultValue) {