Avant de se lancer dans ANT, Maven ou Gradle, nous devons d’abord comprendre quelques éléments qui leur sont liés.
Dépendance : En général, une dépendance se réfère à quand quelque chose exige une certaine autre chose pour obtenir exécuté lui-même. En termes simples, ‘A’ a une dépendance sur ‘B’ si ‘A’ a besoin de ‘B’ pour son exécution réussie. Dans le monde des logiciels, une dépendance est tout ce dont votre application a besoin pour s’exécuter correctement. Il s’agit essentiellement de toute bibliothèque de support externe requise par l’application. par exemple, zuul, hystrix, lombok, jdbc, etc.
Initialement, nous avions l’habitude de gérer les dépendances en :
téléchargeant manuellement le fichier jar de la bibliothèque requise depuis Internet et en l’ajoutant à notre projet.
écrivant un script qui téléchargera automatiquement la bibliothèque depuis une source externe sur le réseau.
Problèmes rencontrés avant ces outils :
Ajouter les dépendances en les téléchargeant manuellement depuis internet est une tâche très fatigante.
Nos scripts pourraient échouer si l’URL de la source externe change sur internet.
Il est très difficile d’identifier et de gérer les dépendances transitives dans notre application.
Outil de gestion des dépendances : Il résout et gère les dépendances requises par l’application.
Outil de construction : Il automatise la création d’applications exécutables à partir du code source. La construction incorpore la compilation, la liaison et l’emballage du code dans une forme utilisable ou exécutable. L’automatisation de la construction implique :
Le téléchargement des dépendances
La compilation du code source en code binaire
L’empaquetage de ce code binaire
L’exécution de tests
Le déploiement sur des systèmes de production
La gestion des dépendances et les outils de construction en java :
ANT + Ivy (2000/2004)
Maven (2004)
Gradle (2012)
Apache ANT (Another Neat Tool) est un projet open source d’Apache, publié en 2000. Il s’agit d’une bibliothèque java utilisée pour automatiser les processus de construction des applications java. Elle peut également être utilisée pour construire des applications non-java. Il suit le principe de « Configuration over convention ». Dans Ant, les différentes phases du processus de construction sont appelées « cibles ». Les fichiers de construction ANT sont écrits en XML et par convention, ils sont appelés « build.xml ». Il contient trois éléments : projet, cible et tâche. Chaque fichier de compilation contient un projet. Chaque chose dans le build.xml est sous l’élément project. Le projet contient au moins une cible (par défaut). La cible contient un ensemble de tâches et définit un état spécifique du processus de construction. Une tâche est un morceau de code qui peut être exécuté. Chaque nœud peut avoir des attributs qui lui sont associés:
Attributs du projet:
Nom : Le nom du projet.
Basedir : Le dossier racine du projet et il est facultatif.
Défaut : La cible par défaut pour la construction. Le projet peut avoir un ou plusieurs nombre de cibles. Il est utilisé pour spécifier la cible par défaut du projet.
Attributs de la cible:
Nom : Le nom de la cible.
Description : Une description sur la cible.
Depends : Liste de toutes les cibles, séparées par une virgule, dont cette cible dépend.
Si : La cible est exécutée si l’attribut est vrai.
Unless : La cible est exécutée si l’attribut n’est pas défini.
Le principal avantage de Ant est sa flexibilité. Ant n’impose aucune convention de codage ou structure de projet au développeur. Par conséquent, cela signifie que Ant demande aux développeurs d’écrire toutes les commandes par eux-mêmes, ce qui conduit parfois à des fichiers de construction volumineux et difficiles à maintenir. Initialement, Ant n’avait pas de support intégré pour la gestion des dépendances. Plus tard, il a adopté Apache Ivy, développé comme un sous-projet du projet Apache Ant, dans le but de gérer les dépendances.
Apache Maven
C’est un outil de gestion des dépendances et d’automatisation de la construction, sorti en 2004. Il continue à utiliser XML mais surmonte les inconvénients en suivant le principe de « Convention over configuration ». Il s’appuie sur des conventions et fournit des commandes prédéfinies (goals). Son fichier de configuration, contenant les instructions de construction et de gestion des dépendances, est par convention appelé « pom.xml » et est présent dans le dossier racine du projet.