@@ -10,6 +10,7 @@ import org.gradle.api.tasks.SourceSet
10
10
import org.gradle.api.tasks.scala.ScalaCompile
11
11
12
12
import java.nio.file.Files
13
+ import java.util.concurrent.ConcurrentHashMap
13
14
14
15
import static groovy.io.FileType.FILES
15
16
@@ -23,6 +24,9 @@ class ScoveragePlugin implements Plugin<PluginAware> {
23
24
24
25
static final String DEFAULT_REPORT_DIR = ' reports' + File . separatorChar + ' scoverage'
25
26
27
+ private volatile File pluginFile = null
28
+ private final ConcurrentHashMap<Task , Set<? extends Task > > taskDependencies = new ConcurrentHashMap<> ();
29
+
26
30
@Override
27
31
void apply (PluginAware pluginAware ) {
28
32
if (pluginAware instanceof Project ) {
@@ -174,9 +178,12 @@ class ScoveragePlugin implements Plugin<PluginAware> {
174
178
}
175
179
176
180
compileTask. configure {
177
- File pluginFile = project. configurations[CONFIGURATION_NAME ]. find {
178
- it. name. startsWith(" scalac-scoverage-plugin" )
181
+ if (pluginFile == null ) {
182
+ pluginFile = project. configurations[CONFIGURATION_NAME ]. find {
183
+ it. name. startsWith(" scalac-scoverage-plugin" )
184
+ }
179
185
}
186
+
180
187
List<String > parameters = [' -Xplugin:' + pluginFile. absolutePath]
181
188
List<String > existingParameters = scalaCompileOptions. additionalParameters
182
189
if (existingParameters) {
@@ -269,9 +276,15 @@ class ScoveragePlugin implements Plugin<PluginAware> {
269
276
}
270
277
271
278
private Set<? extends Task > recursiveDependenciesOf (Task task ) {
279
+ if (! taskDependencies. containsKey(task)) {
280
+ def directDependencies = task. getTaskDependencies(). getDependencies(task)
281
+ def nestedDependencies = directDependencies. collect {recursiveDependenciesOf(it) }. flatten()
282
+ def dependencies = directDependencies + nestedDependencies
272
283
273
- def directDependencies = task. getTaskDependencies(). getDependencies(task)
274
- def nestedDependencies = directDependencies. collect {recursiveDependenciesOf(it) }. flatten()
275
- return directDependencies + nestedDependencies
284
+ taskDependencies. put(task, dependencies)
285
+ return dependencies
286
+ } else {
287
+ return taskDependencies. get(task)
288
+ }
276
289
}
277
290
}
0 commit comments