Refactoring gradle plugin.
This commit is contained in:
parent
78bec0dd53
commit
b4906b1066
@ -1,14 +1,11 @@
|
|||||||
package com.jessebrault.ssg.gradle;
|
package com.jessebrault.ssg.gradle;
|
||||||
|
|
||||||
import org.gradle.api.Project;
|
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.jvm.tasks.Jar;
|
||||||
import org.gradle.tooling.provider.model.ToolingModelBuilder;
|
import org.gradle.tooling.provider.model.ToolingModelBuilder;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.List;
|
||||||
|
|
||||||
public class SsgBuildModelBuilder implements ToolingModelBuilder {
|
public class SsgBuildModelBuilder implements ToolingModelBuilder {
|
||||||
|
|
||||||
@ -21,21 +18,17 @@ public class SsgBuildModelBuilder implements ToolingModelBuilder {
|
|||||||
public @NotNull Object buildAll(@NotNull String modelName, @NotNull Project project) {
|
public @NotNull Object buildAll(@NotNull String modelName, @NotNull Project project) {
|
||||||
final SsgBuildModel ssgBuildModel = new DefaultSsgBuildModel();
|
final SsgBuildModel ssgBuildModel = new DefaultSsgBuildModel();
|
||||||
|
|
||||||
final JavaPluginExtension javaPluginExtension = project.getExtensions().getByType(JavaPluginExtension.class);
|
final List<Jar> ssgJarTasks = project.getTasks().matching(task ->
|
||||||
final SourceSet mainSourceSet = javaPluginExtension.getSourceSets().getByName("main");
|
task instanceof Jar && task.getExtensions().findByType(SsgJarExtension.class) != null
|
||||||
final Jar jarTask = project.getTasks()
|
).stream().map(Jar.class::cast).toList();
|
||||||
.named(mainSourceSet.getJarTaskName(), Jar.class)
|
|
||||||
.get();
|
|
||||||
ssgBuildModel.getBuildOutputLibs().addAll(jarTask.getOutputs().getFiles().getFiles());
|
|
||||||
|
|
||||||
final TaskCollection<Jar> allJarTasks = project.getTasks().withType(Jar.class);
|
|
||||||
ssgBuildModel.getBuildOutputLibs().addAll(
|
ssgBuildModel.getBuildOutputLibs().addAll(
|
||||||
allJarTasks.stream()
|
ssgJarTasks.stream().flatMap(jar -> jar.getOutputs().getFiles().getFiles().stream()).toList()
|
||||||
.flatMap(jar -> jar.getOutputs().getFiles().getFiles().stream())
|
|
||||||
.collect(Collectors.toSet())
|
|
||||||
);
|
);
|
||||||
|
|
||||||
ssgBuildModel.getRuntimeClasspath().addAll(mainSourceSet.getRuntimeClasspath().getFiles());
|
ssgBuildModel.getRuntimeClasspath().addAll(
|
||||||
|
project.getConfigurations().named("runtimeClasspath").get().getFiles()
|
||||||
|
);
|
||||||
|
|
||||||
return ssgBuildModel;
|
return ssgBuildModel;
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package com.jessebrault.ssg.gradle;
|
|||||||
|
|
||||||
import org.gradle.api.Plugin;
|
import org.gradle.api.Plugin;
|
||||||
import org.gradle.api.Project;
|
import org.gradle.api.Project;
|
||||||
|
import org.gradle.api.Task;
|
||||||
import org.gradle.api.artifacts.Configuration;
|
import org.gradle.api.artifacts.Configuration;
|
||||||
import org.gradle.api.artifacts.ConfigurationContainer;
|
import org.gradle.api.artifacts.ConfigurationContainer;
|
||||||
import org.gradle.api.artifacts.Dependency;
|
import org.gradle.api.artifacts.Dependency;
|
||||||
@ -96,7 +97,8 @@ public class SsgGradlePlugin implements Plugin<Project> {
|
|||||||
sourceSet.getJarTaskName(),
|
sourceSet.getJarTaskName(),
|
||||||
Jar.class,
|
Jar.class,
|
||||||
jarTask -> {
|
jarTask -> {
|
||||||
// jarTask.from(javaSourceDirectorySet.getClassesDirectory());
|
jarTask.getExtensions().create("ssgJar", SsgJarExtension.class);
|
||||||
|
// jarTask.from(javaSourceDirectorySet.getClassesDirectory()); // TODO: why not?
|
||||||
jarTask.from(groovySourceDirectorySet.getClassesDirectory());
|
jarTask.from(groovySourceDirectorySet.getClassesDirectory());
|
||||||
jarTask.from(sourceSet.getResources());
|
jarTask.from(sourceSet.getResources());
|
||||||
jarTask.getArchiveBaseName().set(project.getName() + "-" + name);
|
jarTask.getArchiveBaseName().set(project.getName() + "-" + name);
|
||||||
@ -173,9 +175,11 @@ public class SsgGradlePlugin implements Plugin<Project> {
|
|||||||
project.getPlugins().apply(GroovyPlugin.class);
|
project.getPlugins().apply(GroovyPlugin.class);
|
||||||
|
|
||||||
// create our ssgJars task, which is just a holder for source set jar tasks, including main
|
// create our ssgJars task, which is just a holder for source set jar tasks, including main
|
||||||
project.getTasks().register("ssgJars").configure(ssgJars -> {
|
final TaskProvider<Task> ssgJars = project.getTasks().register("ssgJars");
|
||||||
ssgJars.dependsOn("jar"); // main
|
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
|
// configure the repositories, tooling models, and source sets
|
||||||
this.configureRepositories(project);
|
this.configureRepositories(project);
|
||||||
|
@ -0,0 +1,3 @@
|
|||||||
|
package com.jessebrault.ssg.gradle;
|
||||||
|
|
||||||
|
public interface SsgJarExtension {}
|
Loading…
Reference in New Issue
Block a user