Comprendre les dépendances des packages n'est vraiment pas si difficile. De toute façon, vous le faites rarement. Probablement une fois lors de la configuration du projet et quelques autres lors des mises à niveau. Avec maven, vous finirez par corriger les dépendances qui ne correspondent pas, les poms mal écrits et faire quand même des 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 avoir de manière transitoire, d'avoir un schéma de dénomination standardisé pour eux. Gérer tout cela manuellement à 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, tu dois faire la même chose travail, sauf que vous devez tout faire manuellement: saisir une version du projet A et ses dépendances, saisir une version du projet B et ses dépendances, déterminer vous-même quelles versions exactes ils utilisent, vérifier qu'ils ne se chevauchent pas, en vérifiant qu'ils ne sont pas incompatibles, etc. Bienvenue en enfer.
D'autre part, Maven prend en charge la gestion des dépendances et les récupérera de manière transitoire pour moi et me donne les outils dont j'ai besoin pour gérer la complexité inhérente à la gestion des dépendances : je peux analyser une arborescence de dépendances, contrôler les versions utilisées dans les dépendances transitives, exclure certaines des les si nécessaire, contrôler Converge entre les modules, etc. Il n'y a pas de magie. Mais au moins, vous avez du soutien.
Et n'oubliez pas que la gestion des dépendances n'est qu'une petite partie de ce que propose Maven, 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 effectuez un changement, vous devez attendre le lancement de maven build et attendre son déploiement. Aucun déploiement à chaud du tout.
Premièrement, pourquoi utilisez-vous Maven comme ça? Je ne. J'utilise mon IDE pour écrire des tests, du code jusqu'à ce qu'ils réussissent, refactoriser, déployer, déployer à chaud et exécuter une version locale de Maven lorsque j'ai terminé, avant de m'engager, pour m'assurer de ne pas casser la construction continue.
Deuxièmement, je ne suis pas sûr que l'utilisation d'Ant améliorerait beaucoup les choses. Et d'après mon expérience, les builds modulaires Maven utilisant des dépendances binaires me donnent un temps de construction plus rapide que les builds Ant monolithiques typiques. Quoi qu'il en soit, jetez un œil à Maven Shell pour un environnement prêt à (ré) utiliser Maven (ce qui est génial d'ailleurs).
Donc à la fin, et je suis désolé de le dire, ce n'est pas vraiment Maven qui tue votre productivité, c'est vous qui abusez de vos outils. Et si vous n'ê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.