Gradle buduje tylko jeden moduł

152

Mam kompilację gradle z wieloma modułami. Chcę wykonać cele dla jednego modułu przy użyciu roota. Np .:

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

Zatem każdy cel można uruchomić z poziomu roota, określając moduł. Czy jest na to prosty sposób?

Dzięki !

Viraj
źródło
if (project.hasProperty('module') && module.equals('ABC')) { // execute module ABC } .... To jest to, co chcesz osiągnąć?
pepuch
@pepuch, czy możesz wyjaśnić? Chciałbym wypchnąć aktualizacje do mojej aplikacji, która ma w sobie aar, ale aby kompilowała tylko zmiany w aplikacji bez przebudowywania biblioteki.
The_Martian,

Odpowiedzi:

302

Aby wykonać zadanie określonego podprojektu, określ jego ścieżkę do zadania . Na przykład:

gradle :ABC:build

Wiodący :oznacza projekt główny. ABCjest podprojektem i buildzadaniem w tym projekcie.

Peter Niederwieser
źródło
4
Jak możesz sterować za pomocą konfiguracji zamiast wiersza poleceń, aby złożyć tylko jeden podprojekt z wielu? W przypadku Google Release Pipelines uruchamia „gradle clean assemble” w projekcie głównym. Dla mnie to próbuje zbudować kompilacje AppEngine i Androida. Potok wydania zakończy się niepowodzeniem w kompilacji systemu Android, ponieważ nie ma zainstalowanego zestawu SDK, co jest zrozumiałe dla przejściowej maszyny. Wygląda też na to, że Release Pipelines nie oferuje żadnych opcji konfiguracyjnych.
brunobowden
W moim przypadku projekt główny nadal jest sprawdzany i wyświetla komunikaty o błędach, z którymi nie chcę się teraz zajmować. Bardzo irytujące.
Wolfgang Fahl
gradle :ABC:clean :ABC:build
StanislavKo,
gradle build -p moduł A jest lepszy, będzie obsługiwał zależności modułu.
Jan
84

Znalazłem szybki sposób

gradle build -p moduleA

moduleA to katalog modułu.

Powyższe polecenie buduje a moduleAi wszystkie jego moduły podrzędne i moduleApowinno być jego ścieżką

Viraj
źródło
4
Powyższe polecenie zbuduj moudleA i cały jego podmoduł, a modułA powinien być jego ścieżką gradle build -p path\pathSt\moduleA
Viraj
1
Mam opakowanie dla podprojektów, które nie ma własnego pliku oceny. W przeciwieństwie do wybranej odpowiedzi, to działa dla mnie. Dziękuję również za wyjaśnienie w komentarzu, czy mógłbyś dodać to do odpowiedzi?
Vlasec
24

W systemie Mac OS jedyny wariant, który ze mną współpracuje:

./gradlew  ABC:build

ABC to nazwa modułu

(Może działać również w systemie Linux)

Maher Abuthraa
źródło
5

wprowadź opis obrazu tutaj

Jeśli Twoim IDE jest Android Studio, jest na to prosty sposób: po prostu wybierz folder modułu, który chcesz skompilować, a następnie kliknij Build i wybierz Make Module 'your module folder'.

shaojun lyu
źródło