Skip to content

Commit

Permalink
Introduce optional workerSystemProperties.
Browse files Browse the repository at this point in the history
This MapProperty allows to pass in system properties to the forked
worker process that executes the api compare work action.

fixes #83
  • Loading branch information
NielsDoucet authored and melix committed Jan 17, 2025
1 parent d808acb commit 8f65f5c
Showing 1 changed file with 16 additions and 9 deletions.
25 changes: 16 additions & 9 deletions src/main/java/me/champeau/gradle/japicmp/JapicmpTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import org.gradle.api.file.FileCollection;
import org.gradle.api.file.RegularFileProperty;
import org.gradle.api.provider.ListProperty;
import org.gradle.api.provider.MapProperty;
import org.gradle.api.provider.Property;
import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.CacheableTask;
Expand All @@ -38,6 +39,7 @@
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

@CacheableTask
Expand Down Expand Up @@ -74,23 +76,24 @@ public void exec() {
if (current.isEmpty()) {
current = !newArchives.isEmpty() ? toArchives(newArchives) : inferArchives(getNewClasspath());
}
execForNewGradle(baseline, current);
Map<String, ?> workerSystemProperties = getWorkerSystemProperties().getOrElse(Collections.emptyMap());
execForNewGradle(baseline, current, workerSystemProperties);
}

private void execForNewGradle(final List<JApiCmpWorkerAction.Archive> baseline, final List<JApiCmpWorkerAction.Archive> current) {
private void execForNewGradle(final List<JApiCmpWorkerAction.Archive> baseline, final List<JApiCmpWorkerAction.Archive> current, final Map<String, ?> workerSystemProperties) {
getWorkerExecutor().processIsolation(new Action<ProcessWorkerSpec>() {
@Override
public void execute(ProcessWorkerSpec spec) {
spec.getClasspath().from(calculateWorkerClasspath());

String maxWorkerHeap = getMaxWorkerHeap().getOrNull();
if (maxWorkerHeap != null) {
spec.forkOptions(new Action<JavaForkOptions>() {
@Override public void execute(JavaForkOptions javaForkOptions) {
spec.forkOptions(new Action<JavaForkOptions>() {
@Override public void execute(JavaForkOptions javaForkOptions) {
String maxWorkerHeap = getMaxWorkerHeap().getOrNull();
if (maxWorkerHeap != null) {
javaForkOptions.setMaxHeapSize(maxWorkerHeap);
}
});
}
javaForkOptions.systemProperties(workerSystemProperties);
}
});
}
}).submit(JApiCmpWorkAction.class, new Action<JapiCmpWorkParameters>() {
@Override
Expand Down Expand Up @@ -398,4 +401,8 @@ public void addNewArchives(Configuration config) {
@Input
public abstract Property<String> getMaxWorkerHeap();

@Optional
@Input
public abstract MapProperty<String, Object> getWorkerSystemProperties();

}

0 comments on commit 8f65f5c

Please sign in to comment.