Gradle construye solo un módulo

152

Tengo una compilación de gradle de múltiples módulos. Quiero ejecutar objetivos para un módulo usando root. Ej:

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

Por lo tanto, cada objetivo se puede ejecutar desde la raíz especificando el módulo. ¿Hay una manera simple de hacer esto?

Gracias !

Viraj
fuente
if (project.hasProperty('module') && module.equals('ABC')) { // execute module ABC } .... ¿Esto es lo que quieres lograr?
pepuch
@pupuch, ¿podrías aclarar? Me gustaría enviar actualizaciones a mi aplicación, que tiene un archivo AAR, pero hacer que genere solo los cambios en la aplicación sin reconstruir la biblioteca.
The_Martian

Respuestas:

302

Para ejecutar una tarea de un subproyecto específico, especifique su ruta de tarea . Por ejemplo:

gradle :ABC:build

El líder :representa el proyecto raíz. ABCes el subproyecto y builduna tarea en ese proyecto.

Peter Niederwieser
fuente
44
¿Cómo puede controlar a través de la configuración en lugar de la línea de comandos para ensamblar un solo subproyecto de muchos? Para los Pipelines de lanzamiento de Google, dispara un "ensamblaje limpio de gradle" en el proyecto raíz. Para mí, eso intenta construir las compilaciones de AppEngine y Android. Release Pipeline fallará en la compilación de Android ya que no tiene instalado el SDK, lo que es comprensible para una máquina transitoria. Además, tampoco parece que Release Pipelines ofrezca ninguna opción de configuración.
brunobowden
En mi caso, el proyecto raíz aún se inspeccionó y genera mensajes de error con los que no quiero tratar en este momento. Muy molesto.
Wolfgang Fahl
gradle :ABC:clean :ABC:build
StanislavKo
gradle build -p moduleA es mejor, manejará las dependencias del módulo.
John
84

Encontrado un camino rápido

gradle build -p moduleA

moduleA es el directorio del módulo.

El comando anterior construye moduleAay todos sus submódulos, y moduleAdebería ser su ruta

Viraj
fuente
44
El comando anterior crea un moudleA y todo su submódulo, y el módulo A debería ser su ruta gradle build -p path\pathSt\moduleA
Viraj
1
Tengo un contenedor para subproyectos que no tiene un archivo gradle propio. A diferencia de la respuesta seleccionada, esto funciona para mí. También gracias por la aclaración en el comentario, ¿podría agregarlo a la respuesta?
Vlasec
24

En Mac OS, la única variante que funciona conmigo:

./gradlew  ABC:build

ABC es el nombre del módulo

(También podría estar funcionando en Linux)

Maher Abuthraa
fuente
5

ingrese la descripción de la imagen aquí

Si su IDE es Android Studio, hay una manera simple: simplemente elija la carpeta del módulo que desea compilar, luego haga clic en Construir y elija Crear módulo 'su carpeta de módulos'.

shaojun lyu
fuente