Gradle: compilación de varios proyectos

Gradle puede manejar fácilmente los proyectos más pequeños y más grandes. Los proyectos pequeños tienen un solo archivo de compilación y un árbol de fuentes. Es muy fácil de digerir y comprender un proyecto que se ha dividido en módulos más pequeños e interdependientes. Gradle soporta perfectamente este escenario que es compilación multiproyecto.

Estructura para compilación multiproyecto

Tales construcciones vienen en todas las formas y tamaños, pero tienen algunas características comunes:

  • UNA settings.gradle archivo en el directorio raíz o maestro del proyecto.

  • UNA build.gradle archivo en el directorio raíz o maestro.

  • Directorios secundarios que tienen su propio *.gradle archivos de compilación (algunas compilaciones multiproyecto pueden omitir los scripts de compilación de proyectos secundarios).

Para enumerar todos los proyectos en el archivo de compilación, puede usar el siguiente comando.

C:\> gradle -q projects

Salida:

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'projectReports'
+--- Project ':api' - The shared API for the application
\--- Project ':webapp' - The Web application implementation

To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :api:tasks

El informe muestra la descripción de cada proyecto, si se especifica. Puede utilizar el siguiente comando para especificar la descripción. Pégalo en elbuild.gradle archivo.

description = 'The shared API for the application'

Especificación de una configuración de compilación general

en un build.gradle en el root_project, las configuraciones generales se pueden aplicar a todos los proyectos o solo a los subproyectos.

allprojects {
   group = 'com.example.gradle'
   version = '0.1.0'
}

subprojects {
   apply plugin: 'java'
   apply plugin: 'eclipse'
}

Esto especifica un común com.example.gradle grupo y el 0.1.0versión para todos los proyectos. lossubprojects El cierre aplica configuraciones comunes para todos los subproyectos, pero no para el proyecto raíz, como el allprojects el cierre lo hace.

Configuraciones y dependencias específicas del proyecto

El núcleo ui y util Los subproyectos también pueden tener sus propios build.gradle archivo, si tienen necesidades específicas, que aún no están aplicadas por la configuración general del proyecto raíz.

Por ejemplo, el proyecto de interfaz de usuario generalmente tiene una dependencia del proyecto principal. Entonces el proyecto de interfaz de usuario necesita su propiobuild.gradle archivo para especificar esta dependencia.

dependencies {
   compile project(':core')
   compile 'log4j:log4j:1.2.17'
}

Las dependencias del proyecto se especifican con el método del proyecto.