Gradle baut nur ein Modul


152

Ich habe einen Gradle Build mit mehreren Modulen. Ich möchte Ziele für ein Modul mit root ausführen. Ex :

gradle build -Pmodule=ABC
gradle jar -Pmodule=ABC
gradle test -Pmodule=ABC
gradle compileJava -Pmodule=ABC
gradle customTask -Pmodule=ABC
etc.

So kann jedes Ziel vom Stamm ausgeführt werden, der das Modul angibt. Gibt es eine einfache Möglichkeit, dies zu tun?

Vielen Dank !


if (project.hasProperty('module') && module.equals('ABC')) { // execute module ABC } .... Das wollen Sie erreichen?
Pepuch

@pepuch, könntest du bitte klarstellen? Ich möchte Updates für meine App pushen, die einen AAR enthält, aber nur die Änderungen in der App erstellen, ohne die Bibliothek neu zu erstellen.
The_Martian

Antworten:


302

Um eine Aufgabe zu einem bestimmten Teilprojekt auszuführen, geben Sie seine Aufgabe Pfad . Beispielsweise:

gradle :ABC:build

Der führende :steht für das Root-Projekt. ABCist das Teilprojekt und buildeine Aufgabe in diesem Projekt.


4
Wie können Sie über die Konfiguration anstatt über die Befehlszeile steuern, um nur ein Teilprojekt aus vielen zusammenzusetzen? Bei den Release Pipelines von Google wird ein "gradle clean assemble" im Root-Projekt ausgelöst. Für mich versucht das, die AppEngine AND Android Builds zu erstellen. Die Release-Pipeline schlägt beim Android-Build fehl, da das SDK nicht installiert ist, was für einen vorübergehenden Computer verständlich ist. Es sieht auch nicht so aus, als ob Release Pipelines Konfigurationsoptionen bietet.
Brunobowden

In meinem Fall wird das Root-Projekt immer noch überprüft und es werden Fehlermeldungen ausgelöst, mit denen ich mich derzeit nicht befassen möchte. Sehr nervig.
Wolfgang Fahl

gradle :ABC:clean :ABC:build
StanislavKo

gradle build -p moduleA ist besser, es behandelt die Abhängigkeiten des Moduls.
John

84

Einen schnellen Weg gefunden

gradle build -p moduleA

moduleA ist das Verzeichnis des Moduls.

Der obige Befehl erstellt ein moduleAund alle seine Submodule und moduleAsollte sein Pfad sein


4
Über dem Befehl erstellen Sie ein MoudleA und alle seine Submodule, und ModulA sollte sein Pfad sein gradle build -p path\pathSt\moduleA
Viraj

1
Ich habe einen Wrapper für Teilprojekte, der keine eigene Gradle-Datei hat. Im Gegensatz zur ausgewählten Antwort funktioniert dies bei mir. Vielen Dank auch für die Klarstellung im Kommentar. Können Sie ihn der Antwort hinzufügen?
Vlasec

23

Unter Mac OS ist die einzige Variante, die mit mir funktioniert:

./gradlew  ABC:build

ABC ist der Name des Moduls

(Es könnte auch unter Linux funktionieren)


5

Geben Sie hier die Bildbeschreibung ein

Wenn Ihre IDE Android Studio ist, gibt es eine einfache Möglichkeit. Wählen Sie einfach den Modulordner aus, den Sie kompilieren möchten, klicken Sie dann auf Erstellen und wählen Sie Modul zu Ihrem Modulordner machen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.