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 !

Viraj
quelle
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.

Peter Niederwieser
quelle
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

Viraj
quelle
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)

Maher Abuthraa
quelle
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.

Shaojun Lyu
quelle