From b4906b10663925f52cbf1c2d2b283a4984122518 Mon Sep 17 00:00:00 2001 From: JesseBrault0709 <62299747+JesseBrault0709@users.noreply.github.com> Date: Mon, 3 Jun 2024 21:59:30 +0200 Subject: [PATCH] Refactoring gradle plugin. --- .../ssg/gradle/SsgBuildModelBuilder.java | 23 +++++++------------ .../ssg/gradle/SsgGradlePlugin.java | 10 +++++--- .../ssg/gradle/SsgJarExtension.java | 3 +++ 3 files changed, 18 insertions(+), 18 deletions(-) create mode 100644 ssg-gradle-plugin/src/main/java/com/jessebrault/ssg/gradle/SsgJarExtension.java diff --git a/ssg-gradle-plugin/src/main/java/com/jessebrault/ssg/gradle/SsgBuildModelBuilder.java b/ssg-gradle-plugin/src/main/java/com/jessebrault/ssg/gradle/SsgBuildModelBuilder.java index 03b0e58..594c109 100644 --- a/ssg-gradle-plugin/src/main/java/com/jessebrault/ssg/gradle/SsgBuildModelBuilder.java +++ b/ssg-gradle-plugin/src/main/java/com/jessebrault/ssg/gradle/SsgBuildModelBuilder.java @@ -1,14 +1,11 @@ package com.jessebrault.ssg.gradle; import org.gradle.api.Project; -import org.gradle.api.plugins.JavaPluginExtension; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.TaskCollection; import org.gradle.jvm.tasks.Jar; import org.gradle.tooling.provider.model.ToolingModelBuilder; import org.jetbrains.annotations.NotNull; -import java.util.stream.Collectors; +import java.util.List; public class SsgBuildModelBuilder implements ToolingModelBuilder { @@ -21,21 +18,17 @@ public class SsgBuildModelBuilder implements ToolingModelBuilder { public @NotNull Object buildAll(@NotNull String modelName, @NotNull Project project) { final SsgBuildModel ssgBuildModel = new DefaultSsgBuildModel(); - final JavaPluginExtension javaPluginExtension = project.getExtensions().getByType(JavaPluginExtension.class); - final SourceSet mainSourceSet = javaPluginExtension.getSourceSets().getByName("main"); - final Jar jarTask = project.getTasks() - .named(mainSourceSet.getJarTaskName(), Jar.class) - .get(); - ssgBuildModel.getBuildOutputLibs().addAll(jarTask.getOutputs().getFiles().getFiles()); + final List ssgJarTasks = project.getTasks().matching(task -> + task instanceof Jar && task.getExtensions().findByType(SsgJarExtension.class) != null + ).stream().map(Jar.class::cast).toList(); - final TaskCollection allJarTasks = project.getTasks().withType(Jar.class); ssgBuildModel.getBuildOutputLibs().addAll( - allJarTasks.stream() - .flatMap(jar -> jar.getOutputs().getFiles().getFiles().stream()) - .collect(Collectors.toSet()) + ssgJarTasks.stream().flatMap(jar -> jar.getOutputs().getFiles().getFiles().stream()).toList() ); - ssgBuildModel.getRuntimeClasspath().addAll(mainSourceSet.getRuntimeClasspath().getFiles()); + ssgBuildModel.getRuntimeClasspath().addAll( + project.getConfigurations().named("runtimeClasspath").get().getFiles() + ); return ssgBuildModel; } diff --git a/ssg-gradle-plugin/src/main/java/com/jessebrault/ssg/gradle/SsgGradlePlugin.java b/ssg-gradle-plugin/src/main/java/com/jessebrault/ssg/gradle/SsgGradlePlugin.java index a63527b..263f037 100644 --- a/ssg-gradle-plugin/src/main/java/com/jessebrault/ssg/gradle/SsgGradlePlugin.java +++ b/ssg-gradle-plugin/src/main/java/com/jessebrault/ssg/gradle/SsgGradlePlugin.java @@ -2,6 +2,7 @@ package com.jessebrault.ssg.gradle; import org.gradle.api.Plugin; import org.gradle.api.Project; +import org.gradle.api.Task; import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.ConfigurationContainer; import org.gradle.api.artifacts.Dependency; @@ -96,7 +97,8 @@ public class SsgGradlePlugin implements Plugin { sourceSet.getJarTaskName(), Jar.class, jarTask -> { - // jarTask.from(javaSourceDirectorySet.getClassesDirectory()); + jarTask.getExtensions().create("ssgJar", SsgJarExtension.class); + // jarTask.from(javaSourceDirectorySet.getClassesDirectory()); // TODO: why not? jarTask.from(groovySourceDirectorySet.getClassesDirectory()); jarTask.from(sourceSet.getResources()); jarTask.getArchiveBaseName().set(project.getName() + "-" + name); @@ -173,9 +175,11 @@ public class SsgGradlePlugin implements Plugin { project.getPlugins().apply(GroovyPlugin.class); // create our ssgJars task, which is just a holder for source set jar tasks, including main - project.getTasks().register("ssgJars").configure(ssgJars -> { - ssgJars.dependsOn("jar"); // main + final TaskProvider ssgJars = project.getTasks().register("ssgJars"); + final TaskProvider mainJar = project.getTasks().named("jar", Jar.class, task -> { + task.getExtensions().create("ssgJar", SsgJarExtension.class); }); + ssgJars.configure(task -> task.dependsOn(mainJar)); // configure the repositories, tooling models, and source sets this.configureRepositories(project); diff --git a/ssg-gradle-plugin/src/main/java/com/jessebrault/ssg/gradle/SsgJarExtension.java b/ssg-gradle-plugin/src/main/java/com/jessebrault/ssg/gradle/SsgJarExtension.java new file mode 100644 index 0000000..a266232 --- /dev/null +++ b/ssg-gradle-plugin/src/main/java/com/jessebrault/ssg/gradle/SsgJarExtension.java @@ -0,0 +1,3 @@ +package com.jessebrault.ssg.gradle; + +public interface SsgJarExtension {}