Gradle - Construction multi-projets

Gradle peut gérer facilement les projets les plus petits et les plus grands. Les petits projets ont un seul fichier de construction et une arborescence source. Il est très facile de digérer et de comprendre un projet qui a été divisé en modules plus petits et interdépendants. Gradle prend parfaitement en charge ce scénario de construction multi-projets.

Structure pour la construction multi-projets

Ces constructions sont de toutes formes et tailles, mais elles ont certaines caractéristiques communes -

  • UNE settings.gradle dans le répertoire racine ou principal du projet.

  • UNE build.gradle fichier dans le répertoire racine ou maître.

  • Répertoires enfants qui ont leurs propres *.gradle fichiers de construction (certaines versions multi-projets peuvent omettre les scripts de construction de projets enfants).

Pour répertorier tous les projets dans le fichier de construction, vous pouvez utiliser la commande suivante.

C:\> gradle -q projects

Production:

------------------------------------------------------------
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

Le rapport affiche la description de chaque projet, si spécifié. Vous pouvez utiliser la commande suivante pour spécifier la description. Collez-le dans lebuild.gradle fichier.

description = 'The shared API for the application'

Spécification d'une configuration de construction générale

Dans un build.gradle dans le root_project, les configurations générales peuvent être appliquées à tous les projets ou uniquement aux sous-projets.

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

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

Cela spécifie un com.example.gradle groupe et le 0.1.0version à tous les projets. lesubprojects fermeture applique des configurations communes à tous les sous-projets, mais pas au projet racine, comme le allprojects la fermeture fait.

Configurations et dépendances spécifiques au projet

Le noyau ui et util les sous-projets peuvent également avoir leurs propres build.gradle fichier, s'ils ont des besoins spécifiques, qui ne sont pas déjà appliqués par la configuration générale du projet racine.

Par exemple, le projet d'interface utilisateur a généralement une dépendance au projet principal. Le projet d'interface utilisateur a donc besoin du sienbuild.gradle fichier pour spécifier cette dépendance.

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

Les dépendances de projet sont spécifiées avec la méthode projet.