2016-04-29 6 views
0

Warum funktioniert das nicht und wie kann ich das gesuchte Ergebnis erhalten? Konkret möchte ich, dass Jacoco vor Sonarqube läuft.Wie bekomme ich Sonarqube von jacocoTestReport abhängen?

subprojects { 
    apply plugin: 'java' 
    apply plugin: 'idea' 
    apply plugin: 'eclipse' 
    apply plugin: 'jacoco' 

    test { 
     jacoco { 
      excludes = [..., 
         "javolution.*"] 
     } 
    } 

    jacocoTestReport { 
     dependsOn tasks.withType(Test)//This makes integrationTests go. 
    } 

//This is the part that I can't get to work: 
project.tasks["sonarqube"].dependsOn jacocoTestReport 
} 

Fehler sind:

* Where: 
Build file '/dev/abc/build.gradle' line: 92 

* What went wrong: 
A problem occurred evaluating root project 'abc'. 
> Task with name 'sonarqube' not found in project ':thingamajig'. 

Natürlich thingamajig ist ein leeres übergeordnetes Verzeichnis. No build.gradle dort, aber es hat viele Unterverzeichnisse, die eine build.gradle haben. Ich habe eine Reihe von Dingen ausprobiert, wie zum Beispiel das Überprüfen des Task-Graphen und das Einfangen der Ausnahme beim Aufruf. project.tasks.getByName() Zeit zum Stochern, nehme ich an.

Antwort

1

Die Teilprojekte haben keine eigene Sonar-Runner-Task. Stellen Sie fest, dass die Sonar-Runner-Task des Stammprojekts von den jacocoTestReport-Aufgaben des Unterprojekts abhängig ist.

In meinem build.gradle das sieht aus wie

if (hasProperty('sonarAnalyseOnly') && sonarAnalyseOnly.toBoolean()) { 
    tasks.sonarRunner.dependsOn = [] 
} else { 
    tasks.sonarRunner.dependsOn { 
     project.subprojects.findAll { !it.sonarRunner.skipProject }.collect { 
     [ 
       it.tasks.compileSharedJava, 
       it.tasks.compileServerJava, 
       it.tasks.compileGuiJava, 
       it.tasks.integTest, 
       it.tasks.jacocoMerge 
     ] 
     }.flatten() 
    } 
} 
+0

gleichen Fehler, ich habe Angst. Ich habe Teilprojekt hinzugefügt -> und verwendet subproject.tasks ["sonarqube"]. DependsOn jacocoTestReport – user447607

+0

Ich habe println subProject.name hinzugefügt und es druckt so ziemlich, was ich erwarten würde. Der Name des Teilprojekts. – user447607

+0

Erinnerung: dingamajig ist komplett leer. Es ist nicht einmal eine build.gradle-Datei drin, aber es wird immer noch gefunden und ist fehlgeschlagen. – user447607