Skip to content

Commit 611b430

Browse files
authored
Merge pull request #1313 from freefair/fix/1302-java-fork-options-and-tmpdir
#1302 fixes java fork options serialization issue and adds tmpdir to task properties
2 parents 175d71c + 180d55e commit 611b430

File tree

1 file changed

+32
-10
lines changed

1 file changed

+32
-10
lines changed

plantuml-plugin/src/main/java/io/freefair/gradle/plugins/plantuml/PlantumlTask.java

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import org.gradle.api.file.ConfigurableFileCollection;
66
import org.gradle.api.file.DirectoryProperty;
77
import org.gradle.api.file.FileSystemOperations;
8+
import org.gradle.api.provider.ListProperty;
9+
import org.gradle.api.provider.MapProperty;
810
import org.gradle.api.provider.Property;
911
import org.gradle.api.tasks.*;
1012
import org.gradle.process.JavaForkOptions;
@@ -26,9 +28,6 @@ public abstract class PlantumlTask extends SourceTask {
2628
@Inject
2729
protected abstract FileSystemOperations getFileSystemOperations();
2830

29-
@Inject
30-
protected abstract JavaForkOptionsFactory getJavaForkOptionsFactory();
31-
3231
@Classpath
3332
public abstract ConfigurableFileCollection getPlantumlClasspath();
3433

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

5150
@Input
52-
@Getter
53-
@Setter
54-
private JavaForkOptions forkOptions;
51+
public abstract MapProperty<String, Object> getSystemProperties();
52+
53+
@Input
54+
public abstract ListProperty<String> getJvmArgs();
55+
56+
@Input
57+
public abstract Property<Boolean> getDebug();
58+
59+
@OutputDirectory
60+
public abstract DirectoryProperty getTmpDir();
5561

5662
public PlantumlTask() {
5763
this.setGroup("plantuml");
5864
getWithMetadata().convention(true);
5965
getIncludePattern().convention("**/*.puml");
6066
getDeleteOutputBeforeBuild().convention(true);
61-
62-
forkOptions = getJavaForkOptionsFactory().newJavaForkOptions();
63-
getForkOptions().systemProperty("java.awt.headless", true);
67+
getTmpDir().set(getTemporaryDir());
6468
}
6569

6670
@TaskAction
@@ -72,7 +76,25 @@ public void execute() {
7276

7377
WorkQueue workQueue = getWorkerExecutor().processIsolation(process -> {
7478
process.getClasspath().from(getPlantumlClasspath());
75-
getForkOptions().copyTo(process.getForkOptions());
79+
80+
process.forkOptions(javaForkOptions -> {
81+
82+
javaForkOptions.systemProperty("java.awt.headless", true);
83+
javaForkOptions.systemProperty("java.io.tmpdir", getTmpDir().get().getAsFile().getAbsolutePath());
84+
85+
if (getSystemProperties().isPresent()) {
86+
javaForkOptions.systemProperties(getSystemProperties().get());
87+
}
88+
89+
if (getJvmArgs().isPresent()) {
90+
javaForkOptions.jvmArgs(getJvmArgs().get());
91+
}
92+
93+
if (getDebug().isPresent()) {
94+
javaForkOptions.setDebug(getDebug().get());
95+
}
96+
97+
});
7698
});
7799

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

0 commit comments

Comments
 (0)