web-dev-qa-db-fra.com

Maven ou Ivy? Laquelle est la meilleure avec un système déjà en production? Et les autres différences?

Je sais que c'est une question compliquée, mais j'aimerais savoir laquelle est la meilleure dans le cas d'un système qui est déjà en production, avec beaucoup de bugs et une conception vraiment mauvaise. Un vrai gâchis.

En fait, je pose cette question car je convertis déjà ce projet en Maven et je fais face à BEAUCOUP de problèmes. J'avais besoin d'ajuster la structure du dossier, de séparer un cadre horrible créé par l'entreprise du projet (il a été converti en librairie jar), de corriger beaucoup de détails qui cassaient le projet tout le temps, de configurer le POM.xml pour tout faire que Ant faisait déjà et découvrir les bibliothèques qui sont vraiment utilisées dans l'application comme leurs versions (une grande partie des bibliothèques a été renommée sans le numéro de version et le fichier manifeste était vide).

Eh bien, c'était vraiment un enfer. Je suis devenu fou pendant cette tâche et la question qui m'a suivi tout le temps était "Et si je le convertissais en Ivy? Ce serait plus facile?".

Je n'ai jamais travaillé avec Ivy, mais comme je le sais, ça marche avec Ant et c'est plus facile que Maven d'adapter le projet. D'un autre côté, Maven est beaucoup plus utilisé dans la Parole (je me trompe?) Et cela devrait avoir une raison!

Voilà donc mes questions:

  • Intégration avec Jenkins/Hudson: Avec Ivy, c'est aussi simple qu'avec Maven?
  • Plugin Sonar: Même question ci-dessus. L'intégration est-elle simple?
  • Plugin pour Eclipse: C'est un point très faible de Maven. Le plugin est horrible, mais je ne connais pas ceux de Ivy.
  • Processus de déploiement: Une fois que tout est configuré, déployez et publiez le projet avec maven, c'est extrêmement facile. Et avec Ivy?
  • Conversion: Eh bien, mon expérience dans la conversion d'un projet en Maven a été terrible, mais le système n'a pas aidé. L'option que j'avais était que Maven est incroyable pour les nouveaux projets, les projets qui travaillent avec Maven depuis sa création, mais ce n'est pas un bon choix si vous avez un grand projet non organisé. Ai-je tort?
  • Plugins: Que c'est BEAUCOUP de plugins à configurer dans POM.xml. Y a-t-il tellement d'options pour Ivy?
  • Popularité: Lequel est le plus populaire? Lequel est le plus utilisé et pourquoi?

Eh bien, c'est ça. Merci beaucoup!

49
Pmt

Tout d'abord, lisez Comparaison Ivy/Maven sur le site Web Ivy. Les informations clés:

Premièrement, la différence la plus importante est qu'ils ne sont pas du tout le même type d'outils. Apache Maven est un outil de gestion et de compréhension de projet logiciel, tandis qu'Apache Ivy n'est qu'un outil de gestion des dépendances, hautement intégré à Apache Ant ™, l'outil de gestion de build populaire. Une comparaison plus intéressante pourrait donc comparer Apache Ant + Ivy et Apache Maven. Mais cela dépasse le cadre de cette page qui se concentre uniquement sur la gestion des dépendances.

Ivy ajoute une fonctionnalité de gestion des dépendances à Ant, donc vraiment, la question en termes de système de build que vous utilisez est soit:

  • utiliser Ivy/Ant
  • migrer vers Maven

Si votre build utilise déjà Ant, Ivy sera une transition plus facile car vos scripts de build n'ont pas besoin d'être portés vers un système de build différent.

Si vous décidez de passer à Maven, cela nécessitera plus d'efforts, car vous devez réécrire vos scripts de construction et tout maveniser ainsi que configurer votre gestion des dépendances.

Il sera également plus facile de transférer votre configuration de gestion des dépendances d'Ivy/Ant vers Maven si vous décidez d'aller dans cette direction. La gestion de la dépendance Ivy serait donc un bon tremplin à long terme pour passer à une configuration Maven.

70
prunge