Skip to content

Commit

Permalink
Make plantUML forkOptions configurable
Browse files Browse the repository at this point in the history
see #1302
  • Loading branch information
larsgrefer committed Feb 22, 2025
1 parent 57a9f7b commit 842abef
Showing 1 changed file with 17 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package io.freefair.gradle.plugins.plantuml;

import lombok.Getter;
import lombok.Setter;
import org.gradle.api.file.ConfigurableFileCollection;
import org.gradle.api.file.DirectoryProperty;
import org.gradle.api.file.FileSystemOperations;
import org.gradle.api.provider.Property;
import org.gradle.api.tasks.*;
import org.gradle.process.JavaForkOptions;
import org.gradle.process.internal.JavaForkOptionsFactory;
import org.gradle.workers.WorkQueue;
import org.gradle.workers.WorkerExecutor;

Expand All @@ -22,6 +26,9 @@ public abstract class PlantumlTask extends SourceTask {
@Inject
protected abstract FileSystemOperations getFileSystemOperations();

@Inject
protected abstract JavaForkOptionsFactory getJavaForkOptionsFactory();

@Classpath
public abstract ConfigurableFileCollection getPlantumlClasspath();

Expand All @@ -41,23 +48,31 @@ public abstract class PlantumlTask extends SourceTask {
@Input
public abstract Property<Boolean> getDeleteOutputBeforeBuild();

@Input
@Getter
@Setter
private JavaForkOptions forkOptions;

public PlantumlTask() {
this.setGroup("plantuml");
getWithMetadata().convention(true);
getIncludePattern().convention("**/*.puml");
getDeleteOutputBeforeBuild().convention(true);

forkOptions = getJavaForkOptionsFactory().newJavaForkOptions();
getForkOptions().systemProperty("java.awt.headless", true);
}

@TaskAction
public void execute() {

if(getDeleteOutputBeforeBuild().get()) {
if (getDeleteOutputBeforeBuild().get()) {
getFileSystemOperations().delete(deleteSpec -> deleteSpec.delete(getOutputDirectory()));
}

WorkQueue workQueue = getWorkerExecutor().processIsolation(process -> {
process.getClasspath().from(getPlantumlClasspath());
process.getForkOptions().systemProperty("java.awt.headless", true);
getForkOptions().copyTo(process.getForkOptions());
});

for (File file : getSource().matching(p -> p.include(getIncludePattern().get()))) {
Expand Down

0 comments on commit 842abef

Please sign in to comment.