2017-02-16 5 views
0

Ich habe ein Projekt mit vielen Modulen (10+). Innerhalb jeder build.gradle Datei ist es eine Aufgabe:Dynamisch hinzufügen dependsOn zu der Gradle Aufgabe

task findbugs(type: FindBugs, dependsOn: ':MODULENAME:compileReleaseSources') { 
    ignoreFailures = true 
    classes = fileTree('build/intermediates/classes/release/') 
    source = fileTree('src/main/java/') 
    classpath = files() 
    ... and so on 
} 

so wollte ich diese Aufgabe extrahieren und eine benutzerdefinierte script.gradle Datei mit dieser Aufgabe anlegen und es jedem build.gradleapply from: script.gradle verwenden.

Und hier kommt das Problem, damit dies funktioniert, muss ich die MODULENAME an die dependsOn. Wenn ich innerhalb jeder build.gradle Aufgabe hatte, gab es überhaupt kein Problem, weil ich gerade den entsprechenden Modulnamen (:app:compileReleaseSources, :firebase:compileReleaseSources, etc.) hartcodierte.

Gibt es eine Möglichkeit, wie kann ich dynamisch hinzufügen MODULENAME?

+0

Wenn Sie das Skript zu jedem Modul anwenden glaube ich nicht, dass Sie die 'App benötigen:' Präfix. Hast du versucht, es ohne das Präfix zu laufen? –

+0

Sie müssen es nicht hinzufügen, wenn Sie es jedes Modul haben, das stimmt. Aber wenn Sie die Aufgabe in eine andere Datei extrahieren und sie auf das andere Modul build.gradle anwenden, müssen Sie hinzufügen, sonst erhalten Sie die Ausnahme, dass "Aufgabe mit Pfad nicht im Modul XXX existiert". –

Antwort

0

ich mit der einfachste und zuverlässigste Lösung kam ...

def getModuleName() { 
     return displayName.substring(displayName.indexOf(":"), displayName.length() - 1) 
    } 
Verwandte Themen