@@ -29,7 +29,8 @@ class ScoveragePlugin implements Plugin<PluginAware> {
29
29
30
30
static final String DEFAULT_REPORT_DIR = ' reports' + File . separatorChar + ' scoverage'
31
31
32
- private final ConcurrentHashMap<Task , Set<? extends Task > > taskDependencies = new ConcurrentHashMap<> ()
32
+ private final ConcurrentHashMap<Task , Set<? extends Task > > crossProjectTaskDependencies = new ConcurrentHashMap<> ()
33
+ private final ConcurrentHashMap<Task , Set<? extends Task > > sameProjectTaskDependencies = new ConcurrentHashMap<> ()
33
34
34
35
@Override
35
36
void apply (PluginAware pluginAware ) {
@@ -195,11 +196,16 @@ class ScoveragePlugin implements Plugin<PluginAware> {
195
196
196
197
originalCompileTask. enabled = false ;
197
198
compileTask. destinationDirectory = originalCompileTask. destinationDirectory
198
- originalJarTask. mustRunAfter(compileTask)
199
+
200
+ project. getTasks(). each {
201
+ if (recursiveDependenciesOf(it, true ). contains(originalCompileTask)) {
202
+ it. dependsOn(compileTask)
203
+ }
204
+ }
199
205
200
206
// make this project's scoverage compilation depend on scoverage compilation of any other project
201
207
// which this project depends on its normal compilation
202
- def originalCompilationDependencies = recursiveDependenciesOf(compileTask). findAll {
208
+ def originalCompilationDependencies = recursiveDependenciesOf(compileTask, false ). findAll {
203
209
it instanceof ScalaCompile
204
210
}
205
211
originalCompilationDependencies. each {
@@ -382,16 +388,22 @@ class ScoveragePlugin implements Plugin<PluginAware> {
382
388
}
383
389
}
384
390
385
- private Set<? extends Task > recursiveDependenciesOf (Task task ) {
386
- if (! taskDependencies. containsKey(task)) {
391
+ private Set<? extends Task > recursiveDependenciesOf (Task task , boolean sameProjectOnly ) {
392
+ def cache = sameProjectOnly ? sameProjectTaskDependencies : crossProjectTaskDependencies
393
+ if (! cache. containsKey(task)) {
387
394
def directDependencies = task. getTaskDependencies(). getDependencies(task)
388
- def nestedDependencies = directDependencies. collect { recursiveDependenciesOf(it) }. flatten()
395
+ if (sameProjectOnly) {
396
+ directDependencies = directDependencies. findAll {
397
+ it. project == task. project
398
+ }
399
+ }
400
+ def nestedDependencies = directDependencies. collect { recursiveDependenciesOf(it, sameProjectOnly) }. flatten()
389
401
def dependencies = directDependencies + nestedDependencies
390
402
391
- taskDependencies . put(task, dependencies)
403
+ cache . put(task, dependencies)
392
404
return dependencies
393
405
} else {
394
- return taskDependencies . get(task)
406
+ return cache . get(task)
395
407
}
396
408
}
397
409
}
0 commit comments