web-dev-qa-db-fra.com

Différence Jenkins et Maven

Quelle est la différence entre Maven et Jenkins?

Les deux prennent en charge les versions et l'exécution automatisées de JUnits.

Si oui, sont-ils complémentaires ou mutuellement exclusifs? Quand faut-il utiliser l'un sur l'autre?

59
abson

Maven construit un outil/environnement. Jenkins est un outil de CI (intégration continue).

Maven est plus comme un remplacement pour Ant.

  1. Il aide à la construction du projet via plugins par exemple, le contrôle de la construction et de la version, les tests JUnit, etc ...
  2. Il gère dépendances de votre projet. vous définissez comment un projet doit être construit (plugins) et quelles bibliothèques sont nécessaires (dépendances) dans un fichier pom.xml.

Jenkins, en tant que planificateur de travaux intelligent, ne peut pas vous aider pour des tâches telles que le contrôle de version ou le test JUnit. Toutefois, il peut vous aider indirectement à faire tout cela en appelant le fichier pom.xml de votre projet. Et Jenkins vous donne le pouvoir de décider quand appeler le fichier pom.xml, en fonction de la condition à appeler et de ce que vous voulez faire avec le résultat. et Jenkins peuvent écouter différents événements, par exemple svn commit, l’heure actuelle est minuit, etc.

C'est une idée puissante. Par exemple, vous pouvez demander à Jenkins de déclencher une construction ou d'exécuter tous les tests JUnit chaque fois qu'un nouveau code est validé, puis, si les tests unitaires sont réussis, de se déployer sur une machine cible. ou programmez des tâches lourdes à minuit, par exemple des tests unitaires. C’est l’idée de base du déploiement automatique ou de l’intégration continue AKA. CI pour faire court si vous aimez.

85
Junchen Liu

Maven est un outil de construction qui gère les dépendances et le cycle de vie des applications. Il disposait également d’une conception plug-in vous permettant d’ajouter d’autres tâches aux tâches standard de compilation/test/package/install/deploy.

Jenkins est une suite d'intégration continue qui extrait votre code d'un référentiel, le construit et le conditionne, puis le transfère sur un serveur afin que vous puissiez le tester, le tout manuellement. Il peut utiliser Maven ou Ant comme outil de construction.

En résumé, Jenkins peut utiliser Maven comme outil de compilation pour l'intégration continue. Vous pouvez utiliser Maven sans Jenkins si vous choisissez de ne pas faire de CI.

24
duffymo

Le premier paragraphe du page du wiki du plugin Jenkins Maven explique l'interaction entre Jenkins et Maven:

"La gestion des travaux Jenkins n’est pas facile quand ils sont nombreux, en particulier si certains paramètres doivent être identiques entre eux." Jenkins-maven-plugin "permet de générer des emplois Jenkins, un" config.xml "par travail, à partir d’un simple Maven POM. Ainsi, nous pouvons avoir tous les travaux Jenkins contrôlés au même endroit, en réutilisant n'importe quelle quantité de configuration entre eux. "

3
DavidS

Maven est un outil de construction, bref un successeur de fourmi. Cela aide à construire et à contrôler les versions.

Cependant, Jenkins est un système d’intégration continue, où maven est utilisé pour la construction. Jenkins peut être utilisé pour automatiser le processus de déploiement. Chaque fois que le nouveau code est validé, exécutez automatiquement tous les cas de test Junit et, le cas échéant, packagez et déployez le projet dans un emplacement spécifique.

1
Preetham R U