modernized JPMS check and dependency export plugins
All checks were successful
CI / build (push) Successful in 1m57s
All checks were successful
CI / build (push) Successful in 1m57s
This commit is contained in:
@@ -8,6 +8,9 @@ import org.gradle.api.plugins.ObjectConfigurationAction;
|
||||
import org.gradle.api.provider.Provider;
|
||||
|
||||
public class DependencyExportPlugin implements Plugin<Project> {
|
||||
|
||||
public static final String DEPENDENCY_EXPORT_GROUP = "dependency-export";
|
||||
|
||||
@Override
|
||||
public void apply(Project project) {
|
||||
project.apply(new Action<ObjectConfigurationAction>() {
|
||||
|
@@ -24,6 +24,7 @@ import org.gradle.api.plugins.JavaPlugin;
|
||||
import org.gradle.api.plugins.JavaPluginConvention;
|
||||
import org.gradle.api.provider.Property;
|
||||
import org.gradle.api.provider.Provider;
|
||||
import org.gradle.api.tasks.Classpath;
|
||||
import org.gradle.api.tasks.Input;
|
||||
import org.gradle.api.tasks.InputFiles;
|
||||
import org.gradle.api.tasks.Internal;
|
||||
@@ -49,6 +50,8 @@ import java.util.stream.Collector;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static net.woggioni.gradle.dependency.export.DependencyExportPlugin.DEPENDENCY_EXPORT_GROUP;
|
||||
|
||||
public class ExportDependencies extends DefaultTask {
|
||||
|
||||
@Getter(onMethod_ = { @Input })
|
||||
@@ -74,6 +77,7 @@ public class ExportDependencies extends DefaultTask {
|
||||
private final JavaPluginConvention javaPluginConvention;
|
||||
|
||||
@InputFiles
|
||||
@Classpath
|
||||
public Provider<FileCollection> getConfigurationFiles() {
|
||||
return configurationName.map(this::fetchConfiguration);
|
||||
}
|
||||
@@ -96,6 +100,7 @@ public class ExportDependencies extends DefaultTask {
|
||||
|
||||
@Inject
|
||||
public ExportDependencies(ObjectFactory objects) {
|
||||
setGroup(DEPENDENCY_EXPORT_GROUP);
|
||||
javaPluginConvention = getProject().getConvention().getPlugin(JavaPluginConvention.class);
|
||||
configurationName = objects.property(String.class).convention(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME);
|
||||
Provider<File> defaultOutputFileProvider =
|
||||
|
@@ -10,29 +10,37 @@ import org.gradle.api.model.ObjectFactory;
|
||||
import org.gradle.api.plugins.JavaPluginConvention;
|
||||
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.Internal;
|
||||
import org.gradle.api.tasks.Optional;
|
||||
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 org.gradle.api.tasks.options.Option;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.io.File;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static net.woggioni.gradle.dependency.export.DependencyExportPlugin.DEPENDENCY_EXPORT_GROUP;
|
||||
|
||||
@CacheableTask
|
||||
public class RenderDependencies extends DefaultTask {
|
||||
|
||||
@Getter(onMethod_ = { @InputFile })
|
||||
@Getter(onMethod_ = {@InputFile, @PathSensitive(PathSensitivity.NONE)})
|
||||
private Provider<File> sourceFile;
|
||||
|
||||
@Getter(onMethod_ = { @Input})
|
||||
@Getter(onMethod_ = {@Input})
|
||||
private final Property<String> format;
|
||||
|
||||
@Getter(onMethod_ = { @Input })
|
||||
@Getter(onMethod_ = {@Input})
|
||||
private final Property<String> graphvizExecutable;
|
||||
|
||||
@Getter
|
||||
@@ -45,6 +53,7 @@ public class RenderDependencies extends DefaultTask {
|
||||
return outputFile.map(RegularFile::getAsFile).map(File::getAbsolutePath).getOrNull();
|
||||
}
|
||||
|
||||
@Optional
|
||||
@OutputFile
|
||||
public Provider<File> getResult() {
|
||||
return outputFile.map(RegularFile::getAsFile);
|
||||
@@ -64,33 +73,46 @@ public class RenderDependencies extends DefaultTask {
|
||||
}
|
||||
|
||||
public void setExportTask(Provider<ExportDependencies> taskProvider) {
|
||||
dependsOn(taskProvider);
|
||||
sourceFile = taskProvider.flatMap(ExportDependencies::getResult);
|
||||
}
|
||||
|
||||
@Inject
|
||||
public RenderDependencies(ObjectFactory objects) {
|
||||
setGroup(DEPENDENCY_EXPORT_GROUP);
|
||||
sourceFile = objects.property(File.class);
|
||||
javaPluginConvention = getProject().getConvention().getPlugin(JavaPluginConvention.class);
|
||||
format = objects.property(String.class).convention("xlib");
|
||||
graphvizExecutable = objects.property(String.class).convention("dot");
|
||||
Provider<File> defaultOutputFileProvider =
|
||||
getProject().provider(() -> new File(javaPluginConvention.getDocsDir(), "renderedDependencies"));
|
||||
outputFile = objects.fileProperty().convention(getProject().getLayout().file(defaultOutputFileProvider));
|
||||
outputFile = objects.fileProperty().convention(getProject().getLayout().file(defaultOutputFileProvider)
|
||||
.zip(format, (file, type) -> Objects.equals("xlib", type) ? null : file));
|
||||
getOutputs().upToDateWhen(t -> outputFile.isPresent());
|
||||
}
|
||||
|
||||
@TaskAction
|
||||
@SneakyThrows
|
||||
void run() {
|
||||
Path destination = outputFile
|
||||
.map(RegularFile::getAsFile)
|
||||
.map(File::toPath)
|
||||
.get();
|
||||
List<String> cmd = Arrays.asList(
|
||||
java.util.Optional<Path> destination = java.util.Optional.of(
|
||||
outputFile
|
||||
.map(RegularFile::getAsFile)
|
||||
.map(File::toPath)
|
||||
)
|
||||
.filter(Provider::isPresent)
|
||||
.map(Provider::get);
|
||||
|
||||
List<String> cmd = new ArrayList<>(Arrays.asList(
|
||||
graphvizExecutable.get(),
|
||||
"-T" + format.get(),
|
||||
"-o" + destination,
|
||||
sourceFile.get().toString()
|
||||
);
|
||||
"-T" + format.get()
|
||||
));
|
||||
|
||||
if (destination.isPresent()) {
|
||||
cmd.add("-o");
|
||||
cmd.add(destination.get().toString());
|
||||
}
|
||||
cmd.add(sourceFile.get().toString());
|
||||
|
||||
int returnCode = new ProcessBuilder(cmd).inheritIO().start().waitFor();
|
||||
if (returnCode != 0) {
|
||||
throw new GradleException("Error invoking graphviz");
|
||||
|
Reference in New Issue
Block a user