diff --git a/README.adoc b/README.adoc index 43aa604..f338ab2 100644 --- a/README.adoc +++ b/README.adoc @@ -74,6 +74,7 @@ txtOutputFile:: Path to the generated TXT report. Type: _File_. Default value: _ semverOutputFile:: Path to the generated semantic versioning report. Type: _File_. Default value: _null_ includeSynthetic:: Synthetic classes and class members (like e.g. bridge methods) are not tracked per default. This new option enables the tracking of such kind of classes and class members ignoreMissingClasses:: Ignores all superclasses or interfaces that missing on the classpath. Default value: _false_ +maxWorkerHeap:: The max heap for the Gradle worker process. Type: _String_. Default value: _null_ If you don't set _oldArchives_ and _newArchives_, the plugin will infer them from the _oldClasspath_ and _newClasspath_ properties: diff --git a/src/main/java/me/champeau/gradle/japicmp/JapicmpTask.java b/src/main/java/me/champeau/gradle/japicmp/JapicmpTask.java index 66a0ef7..c3132fc 100644 --- a/src/main/java/me/champeau/gradle/japicmp/JapicmpTask.java +++ b/src/main/java/me/champeau/gradle/japicmp/JapicmpTask.java @@ -26,6 +26,7 @@ import org.gradle.api.tasks.Optional; import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.TaskAction; +import org.gradle.process.JavaForkOptions; import org.gradle.workers.ProcessWorkerSpec; import org.gradle.workers.WorkerExecutor; @@ -75,6 +76,15 @@ private void execForNewGradle(final List baseline, @Override public void execute(ProcessWorkerSpec spec) { spec.getClasspath().from(calculateWorkerClasspath()); + + String maxWorkerHeap = getMaxWorkerHeap().getOrNull(); + if (maxWorkerHeap != null) { + spec.forkOptions(new Action() { + @Override public void execute(JavaForkOptions javaForkOptions) { + javaForkOptions.setMaxHeapSize(maxWorkerHeap); + } + }); + } } }).submit(JApiCmpWorkAction.class, new Action() { @Override @@ -354,4 +364,8 @@ public void addExcludeFilter(Class excludeFilterClass) { @Nested public abstract Property getRichReport(); + @Optional + @Input + public abstract Property getMaxWorkerHeap(); + }