Refactoring gradle plugin.

This commit is contained in:
JesseBrault0709 2024-06-03 21:59:30 +02:00
parent 78bec0dd53
commit b4906b1066
3 changed files with 18 additions and 18 deletions

View File

@ -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<Jar> ssgJarTasks = project.getTasks().matching(task ->
task instanceof Jar && task.getExtensions().findByType(SsgJarExtension.class) != null
).stream().map(Jar.class::cast).toList();
final TaskCollection<Jar> 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;
}

View File

@ -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<Project> {
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> {
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<Task> ssgJars = project.getTasks().register("ssgJars");
final TaskProvider<Jar> 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);

View File

@ -0,0 +1,3 @@
package com.jessebrault.ssg.gradle;
public interface SsgJarExtension {}