Outils Java : Y-a-t-il un intérêt à combiner Ant, Maven 2 et Ivy
(tous les 3 étant des projets Apache) ?

Le , par fardon57, Membre du Club
Bonjour,

Ayant récemment obtenu un emploi, et étant développeur Java débutant, je dois faire de mon mieux pour intégrer un projet de taille assez conséquente.

Dans le projet, je suis assez surpris, car je vois des fichiers de configurations de toutes sortes : Maven, Ant, Ivy ...

Je ne suis pas du tout habitué à travailler sur des projets à taille d'entreprise, mais cela ne vous paraît-il pas bizarre cette pratique ? Je pensais qu'il s'agissait d'outils plutôt similaire.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de lunatix lunatix - Rédacteur https://www.developpez.com
le 05/08/2009 à 10:28
il est parfois utile d'utiliser ant a partir de maven pour faire des choses comme copier des fichiers. (maven est d'une rigidité abominable, et faire tenir un vieux projet dedans n'est pas toujours evident)

inversement : on peut utiliser maven a partir de ant juste pour utiliser la gestion de dependances (pratique, un projet ant, mais avec l'utilisation de la gestion des jar de maven) : souvent utile avant une migration d'un projet de ant a maven

par contre, ant + maven + ivy... euh, la je vois pas de bonne raison
Avatar de tchize_ tchize_ - Expert éminent sénior https://www.developpez.com
le 05/08/2009 à 11:44
Citation Envoyé par Akira  Voir le message
Je ne vois pas ce qu'il est impossible de faire avec Maven ou nécessiterait l'utilisation exclusive de Ant, hormis l'intégration d'un existant utilisant déjà Ant bien sur.

Exactement, d'ailleur j'ai un projet qui a subit du maven1 -> maven2, résultat: un maven2 avec des vrai bout de ant dedans
Mais en pratique on pourrais avoir le même résultat soit en revoyant l'archi d'un projet importé, soit en remplacant le bout de ant par un plugin maven2 custom.

En pratique, on a jamasi eu le temps de migrer, un jour peut être :p
Avatar de gifffftane gifffftane - Membre émérite https://www.developpez.com
le 05/08/2009 à 13:06
Je ne dis pas qu'il y a des choses qu'on pourrait faire avec Ant qu'on ne pourrait pas faire avec Maven (une telle pensée est si horrible ! ), je dis que j'utilise les deux dans les domaines où ils me paraissent le plus adaptés (donc cycle de dévelloppement pour maven, déploiement pour ant).

Ce n'est même pas une question de vieux projet que je n'aurais pas le temps de faire évoluer.

J'en suis arrivé à cette conclusion parce que :
  • la complexité du pom.xml et associés explose lorsqu'on y fait entrer une problématique de déploiement,
  • les termes de déploiement sont très spécifiques au... déploiement, voire à un utilisateur, quelque fois, même au poste d'un utilisateur particulier, et même les utilisateurs ont leurs propres phases et leur propre logique, et je préfère séparer le dévellopement du déploiement.
  • vu la floraison de cas particuliers pour le déploiement, la doc d'usage des outils devient un point clef. Hors la doc de ant est un million de fois mieux que la doc de maven, et 10 millions mieux que les plugins de maven. Mon efficacté est donc de 2 à 3 fois supérieure avec ant, vu mes propres limites intellectuelles.
Avatar de lunatix lunatix - Rédacteur https://www.developpez.com
le 05/08/2009 à 14:07
et, juste par curiosité : personne n'a testé gradle ? http://www.gradle.org/userguide.html
Avatar de ReaM ReaM - Membre du Club https://www.developpez.com
le 05/08/2009 à 15:59
Je ne dis pas qu'il y a des choses qu'on pourrait faire avec Ant qu'on ne pourrait pas faire avec Maven (une telle pensée est si horrible ! ), je dis que j'utilise les deux dans les domaines où ils me paraissent le plus adaptés (donc cycle de dévelloppement pour maven, déploiement pour ant).

C'est assez étrange tout de même cette " séparation". Les différents plugins disponible sous maven permettent de réaliser un très large panel de build et deploy différent au cas par cas ( configuration / profils ) . Réellement dans un cas bien précis un script ant serait plus que nécessaire pour effectuer un / des process spécifiques et non réalisable à partir de maven , rien n'empêche le développeur d'utiliser ce script ant et de l'insérer dans le lifecycle de maven ( cfr doc ) .

Et bien moi j'utilise ant+maven et j'en suis trés content. Je ne suis pas du tout d'accord avec tchize_, je ne comprends d'ailleurs pas ce qu'il dit ? chez moi ant et maven ne font du tout le me boulot, gros ou pas. Maven s'occupe de toutes la partie projet, développoment, tandis que ant fait toute la partie déploiement, configuration utilisateur final.

Idem que mon commentaire précédent.

J'ai aussi été tenté par yvi, mais je ne vois pas ce que cela apporterait en plus dans mon schema. Actuellement je suis plutot en train d'étudier ce que pourrait apporter groovy.

Comme dit précédemment par un autre membre, Ivy n'a pas les mêmes scope que Maven.

vu la floraison de cas particuliers pour le déploiement, la doc d'usage des outils devient un point clef. Hors la doc de ant est un million de fois mieux que la doc de maven, et 10 millions mieux que les plugins de maven. Mon efficacté est donc de 2 à 3 fois supérieure avec ant, vu mes propres limites intellectuelles.

Il est vrai que concernant la documentation des plugins sous Maven , c'est la misère pour beaucoup. Il faut vraiment fouiller dans les entrailles du web pour trouver un temps soit peu de documentation avancée ( plus que sur les sites officielles ). Le soucis que je trouve dommage avec Maven & co , c'est justement ce manque de documentation standardisé et bien évidemment aucune DTD ou schema pour la validation .
Avatar de ZeRevo ZeRevo - Membre averti https://www.developpez.com
le 05/08/2009 à 16:40
Autant utiliser maven1

Chez nous on utilise trop maven2, on y passe des jours et des jours à configurer des plugins, à valider des dépendances, ... Maven2 est très bugué et pas assez flexible, j'ai beaucoup d'exemples à donner. Dernièrement je suis tombé sur un plugin qui permettait de faire un mapping de répertoire et pas de possibilité de mapper un fichier. Des fois on passe 4 heures sur maven2 alors qu'en 10 minutes avec un script ça ferait exactement ce qu'on voudrait.

A côté de maven2, on utilise des langages de scripts (bash, perl, python) uniquement pour des tâches de dev, on laisse maven2 gérer tout le process de création de livrable.
Avatar de Patriarch24 Patriarch24 - Membre expérimenté https://www.developpez.com
le 05/08/2009 à 16:45
Je ne vois pas ce qu'il est impossible de faire avec Maven ou nécessiterait l'utilisation exclusive de Ant, hormis l'intégration d'un existant utilisant déjà Ant bien sur.

Il est possible qu'il existe des tâches ant pour des trucs bien précis, mais pas de plugins maven. Ceci est de moins en moins le cas, mais ça existe sûrement encore (je n'ai pas d'exemples sous la main).
Donc, maven + ant why not, tant que ant reste limité à antrun pour des utilisations exotiques pour lesquelles aucun plugin n'existe (ou existe mais n'est pas pratique). Par contre, maven+Ivy, mis à part une compatibilité pour un ancien projet ant+ivy, je vois pas l'intérêt...
Avatar de gifffftane gifffftane - Membre émérite https://www.developpez.com
le 05/08/2009 à 18:20
Citation Envoyé par ReaM  Voir le message
C'est assez étrange tout de même cette " séparation". Les différents plugins disponible sous maven permettent de réaliser un très large panel de build et deploy différent au cas par cas ( configuration / profils ) . Réellement dans un cas bien précis un script ant serait plus que nécessaire pour effectuer un / des process spécifiques et non réalisable à partir de maven , rien n'empêche le développeur d'utiliser ce script ant et de l'insérer dans le lifecycle de maven ( cfr doc ) .

Pourquoi l'insérer dans lifecycle de Maven ?

J'ai bien compris, je sais, que Maven permet de TOUT faire ; je suis heureux que l'on reconnaisse que la doc infernale des plugins incompréhensibles puisse être un problème, c'est déjà ça qui va dans mon sens.

Surtout, je pense que les cycles de développement et les cycles de déploiement n'ont rien à voir, sauf peut-être dans les projets Java EE avec leur unique serveur ou presque. Non seulement cela justifie, mais encore il est mieux, plus pratique, d'avoir deux entités séparées.
Avatar de tchize_ tchize_ - Expert éminent sénior https://www.developpez.com
le 05/08/2009 à 18:30
Citation Envoyé par Patriarch24  Voir le message
Il est possible qu'il existe des tâches ant pour des trucs bien précis, mais pas de plugins maven. Ceci est de moins en moins le cas, mais ça existe sûrement encore (je n'ai pas d'exemples sous la main).

Je peux t'en donner un en production: récuperer le contenu d'un webapp existante (ok, il existe le war overlay) dans le projet tout en
- fusionnant le fichier struts de cette application avec le fichier struts de ton application
- fusionnant d'autre fichiers xml
- patchant tous les liens dans les jsp pour prendre en compte la mise en sous répertoire des jsp de la webapp plutot que sa mise en racine
- ne pas récupérer pas le reste du WEB-INF

La méthode propre aurait été de faire un plugin maven custom plutot qu'un script ant. Mais le script ant existait déjà

Pour ce qui est des deploy au 'cas par cas', je préfère l'option de créer un projet par cible de deploy, projet minuscule qui dépend d'un master project indépendant du deploy et qui ne fait qu'ajouter les règle de configuration. Ainsi on garde une des règles de bon usage de maven: reproductibilité d'un build.
Avatar de Mad666 Mad666 - Nouveau membre du Club https://www.developpez.com
le 31/08/2009 à 5:39
Citation Envoyé par gifffftane  Voir le message
J'ai bien compris, je sais, que Maven permet de TOUT faire ; je suis heureux que l'on reconnaisse que la doc infernale des plugins incompréhensibles puisse être un problème, c'est déjà ça qui va dans mon sens.

Bonjour bonjour,

Dire que Maven permette de TOUT faire me paraît un peu grossier. C'est peut-être vrai maintenant mais il y a moins d'un an, ça ne l'était pas.

Je n'ai, par exemple, pas trouvé comment faire de la copie de fichiers ou du remplacement de chaîne de caractère dans un fichier sans passer par un plugin Ant.
Je n'ai pas non plus trouvé comment limiter les dépendances communes à différents projets Maven du projet sur lequel je travaille à une seule version identifiée et imposée (avec la version 2.0.8 de Maven, il me semble qu'on peut le faire maintenant).

Pour moi, pour l'instant, Ant et Maven sont juste indiscociables je pense.
Avatar de tchize_ tchize_ - Expert éminent sénior https://www.developpez.com
le 31/08/2009 à 10:03
Citation Envoyé par Mad666  Voir le message
Bonjour bonjour,

Dire que Maven permette de TOUT faire me paraît un peu grossier. C'est peut-être vrai maintenant mais il y a moins d'un an, ça ne l'était pas.

On va dire que maven permet de faire beaucoup de chose, à condition de les faire à la manière maven

Je n'ai, par exemple, pas trouvé comment faire de la copie de fichiers ou du remplacement de chaîne de caractère dans un fichier sans passer par un plugin Ant.

build -> ressources -> filter=true
Je n'ai pas non plus trouvé comment limiter les dépendances communes à différents projets Maven du projet sur lequel je travaille à une seule version identifiée et imposée (avec la version 2.0.8 de Maven, il me semble qu'on peut le faire maintenant).

Ca fait longtemps qu'on peux définir les "managed dependencies" dans le projet parent. Il suffit que tous tes projets héritent du même parent imposant les versions.
Offres d'emploi IT
Responsable transverse - engagement métiers H/F
Safran - Ile de France - Corbeil-Essonnes (91100)
Responsable protection des données H/F
Safran - Ile de France - Magny-les-Hameaux (78114)
Architecte électronique de puissance expérimenté H/F
Safran - Ile de France - Villaroche - Réau

Voir plus d'offres Voir la carte des offres IT
Responsables bénévoles de la rubrique Java : Mickael Baron - Robin56 -