Ich habe ein Android-Projekt mit mehreren Modulen. Ich versuche, eine benutzerdefinierte Gradle-Aufgabe von einem der Module aus auszuführen, aber jedes Mal, wenn ich die Aufgabe ausführe, werden alle anderen Gradle-Aufgaben sowohl im Modul als auch in den anderen Modulen ausgeführt. Meine Aufgabe ist nicht von anderen Aufgaben abhängig. Aufgaben :
task helloTask{
println "Hello task"
}
Ich habe versucht, diese Aufgabe über das Terminalfenster in Studio sowie über die Befehlszeile auszuführen.
Gradle führt alle Aufgaben aus, die während der Konfigurationsphase nicht mit <<
deklariert wurden. Wenn Sie die Ausführung einer Aufgabe bis zur Ausführungsphase verzögern möchten, können Sie einfach den <<
hinzufügen.
In Ihrem build.gradle
task helloConfiguration { task ->
println "Hello configuration phase task! $task.name"
}
/* Notice the `<<` this denotes to gradle to not execute
* the closure during the configuration phase. Instead
* delay closure's execution till the execution phase.
*/
task helloExecution << { task ->
println "Hello execution phase task! $task.name"
}
helloExecution.dependsOn helloConfiguration
Wenn Sie dann die Task helloExecution
ausführen, werden beide ausgeführt, wobei die Reihenfolge gewährleistet ist. Wenn wir nur die Tasks ausführen möchten, die den Build konfigurieren, können wir dies separat ausführen, wenn wir nur eine einzelne Task ausführen möchten.
$ gradle helloExecution
Hello configuration phase task! helloConfiguration
Hello execution phase task! helloExecution
:helloConfiguration UP-TO-DATE
:helloExecution UP-TO-DATE
BUILD SUCCESSFUL
Total time: 0.64 secs
$ gradle helloConfiguration
Hello configuration phase task! helloConfiguration
:helloConfiguration UP-TO-DATE
BUILD SUCCESSFUL
Total time: 0.784 secs
Tasks, die während der Konfigurationsphase ausgeführt werden, werden IMMER ausgeführt, auch wenn keine Tasks bereitgestellt werden. Dies ist das Verhalten, das ich von Ihnen erwartet. So gegeben das Beispiel oben. Beachten Sie, dass die Konfigurationsaufgabe ausgeführt wurde, die Ausführung jedoch nicht.
$ gradle
Hello configuration phase task! helloConfiguration
:help
Welcome to Gradle 2.10.
To run a build, run gradle <task> ...
To see a list of available tasks, run gradle tasks
To see a list of command-line options, run gradle --help
To see more detail about a task, run gradle help --task <task>
BUILD SUCCESSFUL
Total time: 0.651 secs
Wenn Sie also 5 Tasks in der Konfigurationsphase ausführen, werden alle von ihnen ausgeführt, unabhängig von der Task, die die Befehlszeilenargumente für das Ziel der Ausführungsphase aufrufen wollten.
In Android Studio die Gradle-Ansicht aufrufen (obere rechte Ecke des Android Studio-Fensters)
Drücken Sie Run Gradle Task (runde Taste).
Wählen Sie aus der Liste der Module das Modul mit build.gradle aus, und wählen Sie dann die Aufgabe aus der Liste der Aufgaben aus.
Auch in der Verlaufsansicht wird Ihre Aufgabe unter YourModule/Tasks/other
angezeigt, es sei denn, group
ist explizit für die Aufgabe angegeben.
Sie können Ausführungskonfigurationen verwenden, um dasselbe zu erreichen. Siehe: https://developer.Android.com/studio/run/rundebugconfig.html
Gehen Sie zu Ausführen -> Konfigurationen bearbeiten -> Klicken Sie auf +, um eine neue Konfiguration hinzuzufügen -> Wählen Sie Gradle aus der angezeigten Liste aus. Wählen Sie schließlich die App aus und geben Sie die Aufgabe ein, die Sie ausführen möchten. Android Studio bietet sogar Autovervollständigung für dasselbe.
Später wird die Ausführung dieser Aufgabe als Option direkt im Menü "Ausführen" verfügbar sein.