Javarevisited

En bref, bien que Maven et ANT soient des outils de build, la principale différence est que maven fournit également la gestion des dépendances, la disposition standard du projet et la gestion du projet. Sur la différence entre Maven, ANT, et Jenkins, ce dernier est un outil d’intégration continue qui est beaucoup plus qu’un outil de construction. Vous pouvez configurer votre environnement de CI à l’aide de Jenkins ou Hudson et construire, tester et déployer automatiquement votre projet Java. Enfin, la principale différence entre Jenkins et Hudson est qu’ils proviennent tous deux du même code source, mais l’un est une source fermée tandis que l’autre est une source ouverte. Vous pouvez lire les détails dans cet article.
Maintenant, commençons une longue histoire, quelle est la différence entre Maven et ANT ou la différence entre Maven et Jenkins, ou Maven vs Hudson sont quelques-unes des questions fréquemment discutées parmi les développeurs Java quand. Eh bien tous les quatre par exemple ANT, Maven, Jenkins, et Hudson sont des outils pour aider les développeurs Java sur la construction, les tests unitaires, l’intégration continue (CI), et la gestion de projet.
Dans cet article Java, nous allons explorer chacun de Maven, ANT, Jenkins, et Hudson pour obtenir une idée de base de ce qu’ils sont, quel avantage ils offrent, et comment ils sont utilisés dans les projets Java JEE. Pour vous donner une idée de base, ANT est un outil de construction bien connu, probablement le plus ancien de tous. Un outil de build est utilisé pour créer des livrables comme le fichier JAR ou le fichier WAR à partir de la source Java et des ressources pour le déploiement.
Maven est venu après ANT et offre beaucoup plus qu’un outil de build. La principale différence entre ANT et Maven est que dans ANT, vous devez tout définir, c’est-à-dire le répertoire source, le répertoire de construction, le répertoire cible, etc, tandis que Maven adopte le principe de la Convention par rapport à la configuration.
Cela signifie que Maven a une structure de projet prédéfinie, c’est-à-dire un répertoire standard pour les fichiers source, les fichiers de test et les ressources. D’autre part, Jenkins et Hudson sont l’outil d’intégration continue, qui vous donne le pouvoir d’automatiser votre processus de construction et de déploiement.
En utilisant Jenkins ou Hudson, vous pouvez déclencher la construction chaque fois que le développeur commet du code, pour voir si le projet se compile bien, pour exécuter des tests unitaires, pour créer une construction, ou même déployer dans l’environnement QA ou de production.
De même, vous pouvez avoir une construction quotidienne, une construction nocturne ou un processus de construction hebdomadaire établi dans Jenkins ou Hudson. Dans la prochaine section, nous allons comprendre Maven, ANT, Jenkins et Hudson plus en détail et comprendre la différence entre eux.
Btw, si vous commencez juste avec Maven, je vous suggère de passer d’abord par un cours complet sur Maven comme Apache Maven : Beginner to Guru pour apprendre quelques principes fondamentaux. Il vous aidera non seulement à construire et à déployer vos projets Java et Spring Boot à l’aide de Maven, mais aussi à apprendre Maven lui-même en profondeur.

Maven vs ANT

Depuis que Maven est sorti, de nombreux programmeurs Java comparent Maven et ANT, ce qui est assez naturel. Même moi, j’ai mis du temps à adopter Maven car j’étais très habitué au processus de construction ANT. Finalement, j’ai réalisé que Maven offre plus de commodité en tant qu’outil de construction qu’ANT et impose également une façon commune de construire des applications Java parmi de multiples projets, développeurs et organisations.
Avant de passer à Maven, j’avais travaillé avec des scripts ANT très complexes, en fait chaque projet sur lequel je travaille a une structure de construction différente des autres.
Pour faire une version, vous devez passer un temps considérable à comprendre l’ensemble du processus de construction, par exemple, d’où viennent les bibliothèques, viennent-elles en tant que JAR ou le projet les construit-il pendant le temps de construction, etc. Maven résout beaucoup de ces problèmes en introduisant une convention standard et une meilleure gestion des dépendances.
Si nous devons comparer Maven et ANT, voici ma liste de différence entre Maven et ANT :

1) Une différence majeure entre Maven et ANT est que Maven nécessite moins de configuration que ANT car il fonctionne sur le principe de la convention sur la configuration et suppose un défaut raisonnable e.par exemple, le fichier source java dans ${basedir}/src/main/java, les ressources sur ${basedir}/src/main/resources, les cas de test JUnit sur ${basedir}/src/test/java, etc.
Il crée également les fichiers de classe Java sur ${basedir}/target/classes et le fichier JAR sur ${basedir}/répertoire cible. D’autre part, ANT nécessite tous ces répertoires fournis en tant que configuration, généralement dans le fichier de construction ANT, par exemple build.xml.
2) Une autre différence significative entre Maven et ANT est la gestion des dépendances. Maven a introduit le concept de référentiel, qui est un endroit central pour stocker toutes les bibliothèques, JARs, etc. Maven vous permet d’utiliser un dépôt maven central ainsi qu’un dépôt local et de télécharger automatiquement les dépendances pendant le processus de construction.
Alors que les projets basés sur ANT utilisent généralement ${lib} comme répertoire pour stocker les dépendances. Le changement et la mise à jour des dépendances sont beaucoup plus faciles dans maven que dans ANT, car vous n’avez pas besoin de télécharger manuellement les dépendances. Avoir un référentiel central à l’échelle de l’organisation permet également de supprimer la redondance entre les différents projets.

3) La troisième et plus importante différence entre Maven et ANT est que Maven offre une interface cohérente et commune pour construire des projets Java. Tout ce que vous avez à faire est de télécharger le projet et d’exécuter mvn install pour le construire. En outre, en connaissant les conventions maven et en regardant pom.xml, on peut facilement comprendre où se trouvent les fichiers sources et quelles sont les dépendances du projet.
4) Une autre différence technique entre ANT et Maven est que la tâche ANT n’a pas de cycle de vie, vous devez définir les cibles et leurs dépendances. Alors que Maven a un cycle de vie, qui est invoqué lorsque vous exécutez des commandes comme mvn install. Maven exécute une série d’étapes à la suite de cette commande pour produire des artefacts, par exemple un fichier JAR, qui est la fin du cycle de vie.
5) Maven applique également une convention de nommage standard pour les artefacts définis à l’aide de groupId, artifactId et version. En outre, une autre différence entre ANT et Maven est que Maven est plus qu’un simple outil de construction, il agit comme un outil de gestion de projet et peut générer des rapports, etc, Bien que je n’ai pas encore utilisé cette fonctionnalité.

Maven vs Jenkins et Hudson

Jenkins et Hudson sont des outils d’intégration continue, communément appelés frameworks CI. Ils permettent au projet Java d’automatiser le processus de construction et de déploiement. En utilisant des outils CI comme Hudson ou Jenkins, vous pouvez créer des builds horaires ou quotidiens automatiquement, vous pouvez également exécuter automatiquement vos tests unitaires et pouvez déployer la build dans votre environnement QA ou de production.
Cela aide si vous travaillez dans un grand projet et que l’équipe de développement est répartie sur plusieurs sites. Les outils CI peuvent déclencher la construction chaque fois que le développeur commet du code et vérifier si le projet se compile ou non.
A propos, Jenkins et Hudson sont issus du même arbre source. Hudson était un projet original qui était open source et soutenu par Sun.
Lorsqu’Oracle a acheté Sun, il a pris le contrôle du nom Hudson et de la plateforme logistique de Hudson. De nombreux contributeurs open source n’étaient pas à l’aise avec cela, ce qui donne Jenkins, qui est plutôt axé sur la communauté.
Si nous devons comparer Maven et Jenkins ou Hudson, voici ma liste de différences entre Maven et Hudson ou Jenkins :

1) La principale différence entre Maven et Jenkins ou Hudson est que Maven est un outil de construction qui sait comment construire un projet et Jenkins ou Hudson fournit un déclencheur de construction. Vous pouvez contrôler quand déclencher la construction automatiquement en utilisant Jenkins ou Hudson ou tout autre outil CI.
2) Jenkins peut utiliser Maven comme outil de construction. De plus, Jenkins ou Hudson peuvent faire beaucoup plus que de construire des applications, ils peuvent exécuter tous les tests unitaires, déployer les livrables dans les serveurs configurés, etc. Essentiellement, la différence est que Maven est un outil de construction tandis que Jenkins ou Hudson est un outil d’intégration continue.
C’est tout sur la différence entre Maven et ANT, Jenkins ou Hudson, etc. Maven est à peu près standard de construire des projets Java aujourd’hui et vous pouvez le personnaliser pour s’adapter à votre environnement hérité basé sur ANT. Certaines organisations ont également des outils CI comme Jenkins qui peuvent être utilisés avec Maven pour automatiser le processus de construction, de test et de déploiement.
Apprentissage complémentaire
Maven Fundamentals by Bryan Hansen
Maven Crash Course
Java Maven :101 Arrêtez de construire des programmes Java de manière difficile !