Il n'est pas si difficile de déterminer les dépendances des paquets. Vous le faites rarement de toute façon. Probablement une fois pendant la mise en place du projet et quelques autres pendant les mises à jour. Avec maven, vous finirez de toute façon par corriger les dépendances mal assorties, les poms mal écrits et les exclusions de paquets.
Pas si difficile... pour les projets de jouets. Mais les projets sur lesquels je travaille en ont beaucoup, vraiment beaucoup, et je suis très heureux de les obtenir de manière transitive, d'avoir un schéma de nommage standardisé pour eux. Gérer tout cela à la main serait un cauchemar.
Et oui, il faut parfois travailler sur la convergence des dépendances. Mais réfléchissez-y à deux fois, ce n'est pas inhérent à Maven, c'est inhérent à tout système utilisant des dépendances (et je parle ici des dépendances Java en général).
Donc avec Ant, vous devez faire le même fonctionnent, sauf que vous devez tout faire manuellement : récupérer une version du projet A et ses dépendances, récupérer une version du projet B et ses dépendances, déterminer vous-même quelles versions exactes ils utilisent, vérifier qu'elles ne se chevauchent pas, vérifier qu'elles ne sont pas incompatibles, etc. Bienvenue en enfer.
D'un autre côté, Maven prend en charge la gestion des dépendances et les récupérera de manière transitive pour moi et me donne l'outillage nécessaire pour gérer la complexité. inhérents à la gestion des dépendances : Je peux analyser un arbre de dépendances, contrôler les versions utilisées dans les dépendances transitives, en exclure certaines si nécessaires, contrôler la convergence entre les modules, etc. Il n'y a pas de magie. Mais au moins, vous avez un soutien.
Et n'oubliez pas que la gestion des dépendances n'est qu'une petite partie de ce que Maven offre, il y a beaucoup plus (sans même mentionner les autres outils qui s'intègrent bien avec Maven, par exemple. Sonar ).
Cycle lent FIX-COMPILE-DEPLOY-DEBUG, qui tue la productivité. C'est mon principal reproche. Vous apportez une modification, puis vous devez attendre que la compilation maven se mette en route et attendre qu'elle soit déployée. Pas de déploiement à chaud.
D'abord, pourquoi utilisez-vous Maven comme ça ? Je ne l'utilise pas. J'utilise mon IDE pour écrire des tests, coder jusqu'à ce qu'ils réussissent, remanier, déployer, déployer à chaud et exécuter une construction Maven locale lorsque j'ai terminé, avant de valider, pour m'assurer que je ne casserai pas la construction continue.
Deuxièmement, je ne suis pas sûr que l'utilisation de Ant améliorerait beaucoup les choses. Et d'après mon expérience, les constructions Maven modulaires utilisant des dépendances binaires me donnent un temps de construction plus rapide que les constructions Ant monolithiques typiques. Quoi qu'il en soit, jetez un coup d'œil à Maven Shell pour un environnement Maven prêt à être (re)utilisé (qui est d'ailleurs génial).
Au final, et je suis désolé de le dire, ce n'est pas vraiment Maven qui tue votre productivité, c'est vous qui utilisez mal vos outils. Et si vous n'en êtes pas satisfait, eh bien, que puis-je dire, ne l'utilisez pas. Personnellement, j'utilise Maven depuis 2003 et je n'ai jamais regardé en arrière.