Skip to content

Commit

Permalink
Merge pull request #1313 from freefair/fix/1302-java-fork-options-and…
Browse files Browse the repository at this point in the history
…-tmpdir

#1302 fixes java fork options serialization issue and adds tmpdir to task properties
  • Loading branch information
Frisch12 authored Feb 25, 2025
2 parents 175d71c + 180d55e commit 611b430
Showing 1 changed file with 32 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import org.gradle.api.file.ConfigurableFileCollection;
import org.gradle.api.file.DirectoryProperty;
import org.gradle.api.file.FileSystemOperations;
import org.gradle.api.provider.ListProperty;
import org.gradle.api.provider.MapProperty;
import org.gradle.api.provider.Property;
import org.gradle.api.tasks.*;
import org.gradle.process.JavaForkOptions;
Expand All @@ -26,9 +28,6 @@ public abstract class PlantumlTask extends SourceTask {
@Inject
protected abstract FileSystemOperations getFileSystemOperations();

@Inject
protected abstract JavaForkOptionsFactory getJavaForkOptionsFactory();

@Classpath
public abstract ConfigurableFileCollection getPlantumlClasspath();

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

@Input
@Getter
@Setter
private JavaForkOptions forkOptions;
public abstract MapProperty<String, Object> getSystemProperties();

@Input
public abstract ListProperty<String> getJvmArgs();

@Input
public abstract Property<Boolean> getDebug();

@OutputDirectory
public abstract DirectoryProperty getTmpDir();

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

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

@TaskAction
Expand All @@ -72,7 +76,25 @@ public void execute() {

WorkQueue workQueue = getWorkerExecutor().processIsolation(process -> {
process.getClasspath().from(getPlantumlClasspath());
getForkOptions().copyTo(process.getForkOptions());

process.forkOptions(javaForkOptions -> {

javaForkOptions.systemProperty("java.awt.headless", true);
javaForkOptions.systemProperty("java.io.tmpdir", getTmpDir().get().getAsFile().getAbsolutePath());

if (getSystemProperties().isPresent()) {
javaForkOptions.systemProperties(getSystemProperties().get());
}

if (getJvmArgs().isPresent()) {
javaForkOptions.jvmArgs(getJvmArgs().get());
}

if (getDebug().isPresent()) {
javaForkOptions.setDebug(getDebug().get());
}

});
});

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

0 comments on commit 611b430

Please sign in to comment.