|
20 | 20 | package org.netbeans.modules.gradle.tooling; |
21 | 21 |
|
22 | 22 | import static java.util.Arrays.asList; |
| 23 | +import java.util.List; |
23 | 24 | import java.util.Set; |
24 | 25 | import org.gradle.api.DefaultTask; |
25 | 26 | import org.gradle.api.logging.Logger; |
@@ -76,15 +77,8 @@ private void configureJavaExec(Project project, JavaExec je) { |
76 | 77 | je.setArgs(asList(project.property(RUN_SINGLE_ARGS).toString().split(" "))); |
77 | 78 | } |
78 | 79 | if (project.hasProperty(RUN_SINGLE_JVM_ARGS)) { |
79 | | - // Property jvmArgumentProviders should not be implemented as a lambda to allow execution optimizations. |
80 | | - // See https://docs.gradle.org/current/userguide/validation_problems.html#implementation_unknown |
81 | | - je.getJvmArgumentProviders().add(new CommandLineArgumentProvider() { |
82 | | - // Do not convert to lambda. |
83 | | - @Override |
84 | | - public Iterable<String> asArguments() { |
85 | | - return asList(project.property(RUN_SINGLE_JVM_ARGS).toString().split(" ")); |
86 | | - } |
87 | | - }); |
| 80 | + // do not use plain setter, as other Plugins may provide their own JVM flags + providers. |
| 81 | + je.getJvmArgumentProviders().add(new JvmArgumentsHolder(asList(project.property(RUN_SINGLE_JVM_ARGS).toString().split(" ")))); |
88 | 82 | } |
89 | 83 | try { |
90 | 84 | je.setStandardInput(System.in); |
@@ -112,4 +106,22 @@ private void addTask(Project project, Task runTask) { |
112 | 106 | runSingle.configure((task) -> task.doFirst((action) -> project.getLogger().warn(DEPRECATE_RUN_SINGLE))); |
113 | 107 | } |
114 | 108 |
|
| 109 | + /** |
| 110 | + * A simple holder to add JVM arguments on top of other args provide by other plugins. |
| 111 | + * DO NOT store Project or other resource-bound references here, keep static. It is attached to a task |
| 112 | + * as a provider and serialized/cached. See Micronaut Configuration |
| 113 | + * Cache requirements. |
| 114 | + */ |
| 115 | + private static class JvmArgumentsHolder implements CommandLineArgumentProvider { |
| 116 | + private final List<String> jvmArguments; |
| 117 | + |
| 118 | + public JvmArgumentsHolder(List<String> jvmArguments) { |
| 119 | + this.jvmArguments = jvmArguments; |
| 120 | + } |
| 121 | + |
| 122 | + @Override |
| 123 | + public Iterable<String> asArguments() { |
| 124 | + return jvmArguments; |
| 125 | + } |
| 126 | + } |
115 | 127 | } |
0 commit comments