Refactoring gradle plugin.
This commit is contained in:
parent
78bec0dd53
commit
b4906b1066
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -0,0 +1,3 @@
|
||||
package com.jessebrault.ssg.gradle;
|
||||
|
||||
public interface SsgJarExtension {}
|
Loading…
Reference in New Issue
Block a user