Gradle costruisce solo un modulo


152

Ho una build a più moduli. Voglio eseguire obiettivi per un modulo usando root. Es:

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

Quindi ogni target può essere eseguito dalla radice specificando il modulo. C'è un modo semplice per fare questo?

Grazie !


if (project.hasProperty('module') && module.equals('ABC')) { // execute module ABC } .... Questo è quello che vuoi ottenere?
pepuch

@pepuch, potresti chiarire, per favore? Vorrei inviare aggiornamenti alla mia app che ha un aar in essa, ma per farlo costruire solo le modifiche nell'app senza ricostruire la libreria.
The_Martian l'

Risposte:


302

Per eseguire un'attività di un sottoprogetto specifico, specificarne il percorso . Per esempio:

gradle :ABC:build

Il principale :sta per il progetto di root. ABCè il sottoprogetto e buildun'attività in quel progetto.


4
Come si può controllare tramite config anziché tramite riga di comando per assemblare un solo sottoprogetto su molti? Per le pipeline di rilascio di Google, si avvia un "assemblaggio graduale pulito" nel progetto di root. Per me, quello cerca di costruire AppEngine E build Android. La pipeline di rilascio avrà esito negativo sulla build Android in quanto non è installato l'SDK, comprensibile per un computer temporaneo. Inoltre, sembra che Release Pipeline non offra alcuna opzione di configurazione.
brunobowden,

Nel mio caso il progetto di root ha ancora esaminato e genera messaggi di errore che non voglio affrontare in questo momento. Molto noioso.
Wolfgang Fahl,

gradle :ABC:clean :ABC:build
StanislavKo

gradle build -p moduleA è meglio, gestirà le dipendenze del modulo.
Giovanni,

84

Trovato un modo rapido

gradle build -p moduleA

moduleA è la directory del modulo.

Sopra il comando crea un moduleAe tutti i suoi sottomoduli e moduleAdovrebbe essere il suo percorso


4
Sopra il comando costruisci un moudleA e tutto il suo sottomodulo, e moduleA dovrebbe essere il suo percorso gradle build -p path\pathSt\moduleA
Viraj

1
Ho un wrapper per sottoprogetti che non ha un file gradle a sé stante. A differenza della risposta selezionata, questo funziona per me. Anche grazie per il chiarimento nel commento, potresti aggiungerlo alla risposta?
Vlasec,

24

Su Mac OS, l'unica variante che funziona con me:

./gradlew  ABC:build

ABC è il nome del modulo

(Potrebbe funzionare anche su Linux)


5

inserisci qui la descrizione dell'immagine

Se il tuo IDE è Android Studio, c'è un modo semplice: basta scegliere la cartella del modulo che si desidera compilare, quindi fare clic su Costruisci e scegliere Rendi il modulo 'cartella del modulo'.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.