Gradle ne construit qu'un seul module

152

J'ai une construction de gradle à modules multiples. Je veux exécuter des cibles pour un module en utilisant root. Ex:

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

Ainsi, chaque cible peut être exécutée à partir de la racine en spécifiant le module. Existe-t-il un moyen simple de procéder?

Merci !

Viraj
la source
if (project.hasProperty('module') && module.equals('ABC')) { // execute module ABC } .... C'est ce que vous voulez réaliser?
pepuch
@pepuch, pourriez-vous clarifier? Je voudrais pousser les mises à jour sur mon application qui contient un aar, mais pour qu'elle ne compile que les modifications de l'application sans reconstruire la bibliothèque.
The_Martian

Réponses:

302

Pour exécuter une tâche d'un sous-projet spécifique, spécifiez son chemin de tâche . Par exemple:

gradle :ABC:build

Le premier :représente le projet racine. ABCest le sous-projet et buildune tâche de ce projet.

Peter Niederwieser
la source
4
Comment pouvez-vous contrôler via la configuration plutôt que la ligne de commande pour n'assembler qu'un sous-projet parmi plusieurs? Pour les pipelines de publication de Google, il déclenche un "assemblage propre gradle" dans le projet racine. Pour moi, cela tente de créer les versions AppEngine ET Android. Le pipeline de publication échouera sur la version Android car le SDK n'est pas installé, ce qui est compréhensible pour une machine transitoire. De plus, il ne semble pas que Release Pipelines propose des options de configuration.
brunobowden
Dans mon cas, le projet racine est toujours inspecté et déclenche des messages d'erreur que je ne veux pas traiter pour le moment. Très ennuyant.
Wolfgang Fahl
gradle :ABC:clean :ABC:build
StanislavKo
gradle build -p moduleA est meilleur, il gérera les dépendances du module.
John
84

Trouvé un moyen rapide

gradle build -p moduleA

moduleA est le répertoire du module.

La commande ci-dessus construit un moduleAet tous ses sous-modules, et moduleAdevrait être son chemin

Viraj
la source
4
Au-dessus de la commande, construisez un moudleA et tout son sous-module, et moduleA devrait être son chemin gradle build -p path\pathSt\moduleA
Viraj
1
J'ai un wrapper pour les sous-projets qui n'a pas de fichier gradle propre. Contrairement à la réponse choisie, cela fonctionne pour moi. Merci également pour la clarification dans le commentaire, pourriez-vous l'ajouter à la réponse?
Vlasec
24

Sur Mac OS, la seule variante qui fonctionne avec moi:

./gradlew  ABC:build

ABC est le nom du module

(Cela fonctionne peut-être aussi sous Linux)

Maher Abuthraa
la source
5

entrez la description de l'image ici

Si votre IDE est Android Studio, il existe un moyen simple: choisissez simplement le dossier du module que vous souhaitez compiler, puis cliquez sur Construire et choisissez Créer le module `` votre dossier de module ''.

shaojun lyu
la source