2016-04-27 10 views
4

Wahrscheinlich eine einfache Frage, aber ich kann keinen Weg finden, welche Aufgaben durch die Plugins, die in einer build.gradle Datei angewendet werden, aufgelistet werden. also sagen, dass Ihre build.gradle einfach ist:gradle: Wie listet ich Aufgaben auf, die von einem bestimmten Plugin eingeführt wurden

apply plugin: 'java' 

ist es eine einfache Möglichkeit gradle Liste, die alle Aufgaben, die von diesem Plugin eingeführt zu machen?

PS: die im Fall chaotisch und großen Build-Dateien mit Dutzenden angewandt Plugins

PS2 handlichen kommen würde: Ich bin nicht über die Abhängigkeiten der Aufgaben zu stellen. Meine Frage ist anders und ziemlich klar. Jedes Plugin, das ich anwende, führt einige eigene Aufgaben ein (egal was davon abhängt). Die Frage ist, welche sind die neu eingeführten Aufgaben überhaupt?

+0

Mögliches Duplikat von [Gibt es eine Möglichkeit, Aufgabenabhängigkeiten in Gradle aufzulisten?] (Http://stackoverflow.com/questions/10422054/is-there-a-way-to-list-task-dependencies-in- Gradle) – LeslieV

+0

Meine Frage ist anders. Lies PS2. – Vas

+1

Kein wirklich schöner Weg, aber Sie könnten versuchen, Diff './gradlew Tasks --all' Ergebnisse - mit und ohne das Plugin. – alexvetter

Antwort

5

Ich fürchte, es ist nicht möglich wegen der Art, wie Gradle Plugins angewendet werden.

Wenn Sie take a look bei Plugin Schnittstelle, werden Sie sehen, es hat eine einzige apply(Project p) Methode. Die Plugin-Verantwortlichkeit besteht darin, ein Projekt zu konfigurieren - es kann bestimmte Aufgaben/Konfigurationen/etc. hinzufügen. Zum Beispiel ist Gradle JavaPlugin statuslos, so dass Sie keine Aufgaben von ihm bekommen können.

Die einzige Lösung, die den Sinn kommt, ist ein Unterschied von Aufgaben zu erhalten, nachdem das Plugin angewendet:

build.gradle

def tasksBefore = [], tasksAfter = []  
project.tasks.each { tasksBefore.add(it.name) } // get all tasks 

apply(plugin: 'idea') // apply plugin 

project.tasks.each { tasksAfter.add(it.name) } // get all tasks 
tasksAfter.removeAll(tasksBefore); // get the difference 

println 'idea tasks: ' + tasksAfter; 

Diese Aufgaben gedruckt werden, die von Idea-Plugin hinzugefügt wurden :

Idee Aufgaben: [cleanIdea, cleanIdeaModule, cleanIdeaProject, cleanIdeaWorkspace, Idee, ideaModule, ideaPro ject, ideaWorkspace]

Sie können ein wenig mit diesem Code spielen und eine akzeptable Lösung erstellen.

+0

Macht Sinn. – Vas

Verwandte Themen