Averiguar las dependencias del paquete no es realmente tan difícil. Raramente lo haces de todos modos. Probablemente una vez durante la configuración del proyecto y algunas más durante las actualizaciones. Con Maven, terminarás arreglando dependencias no coincidentes, poms mal escritos y haciendo exclusiones de paquetes de todos modos.
No es tan difícil ... para proyectos de juguetes. Pero los proyectos en los que trabajo tienen muchos, muchos, y estoy muy contento de obtenerlos de manera transitiva, de tener un esquema de nombres estandarizado para ellos. Gestionar todo esto manualmente a mano sería una pesadilla.
Y sí, a veces tienes que trabajar en la convergencia de dependencias. Pero piénselo dos veces, esto no es inherente a Maven, es inherente a cualquier sistema que use dependencias (y estoy hablando de las dependencias de Java en general aquí).
Entonces, con Ant, debe hacer el mismo trabajo, excepto que debe hacer todo manualmente: tomar alguna versión del proyecto A y sus dependencias, tomar alguna versión del proyecto B y sus dependencias, averiguar qué versiones exactas usan, verificar que no se superponen, comprobando que no son incompatibles, etc. Bienvenido al infierno.
Por otro lado, Maven admite la gestión de dependencias y las recuperará de forma transitiva para mí y me proporciona las herramientas que necesito para gestionar la complejidad inherente a la gestión de dependencias : puedo analizar un árbol de dependencias, controlar las versiones utilizadas en dependencias transitivas, excluir algunas de ellos si es necesario, controlar la converger en módulos, etc. no hay magia. Pero al menos tienes apoyo.
Y no olvide que la gestión de dependencias es solo una pequeña parte de lo que ofrece Maven, hay mucho más (sin mencionar las otras herramientas que se integran muy bien con Maven, por ejemplo, Sonar ).
Lento ciclo FIX-COMPILE-DEPLOY-DEBUG, que mata la productividad. Esta es mi queja principal. Realizas un cambio, tienes que esperar a que comience la construcción de Maven y esperar a que se implemente. Sin despliegue en caliente en absoluto.
Primero, ¿por qué usas Maven así? Yo no. Utilizo mi IDE para escribir pruebas, codificar hasta que pasen, refactorizar, implementar, implementar en caliente y ejecutar una compilación local de Maven cuando haya terminado, antes de comprometerme, para asegurarme de que no romperé la compilación continua.
En segundo lugar, no estoy seguro de que usar Ant mejoraría mucho las cosas. Y según mi experiencia, las compilaciones modulares de Maven que utilizan dependencias binarias me dan un tiempo de compilación más rápido que las compilaciones típicas de Ant monolíticas. De todos modos, eche un vistazo a Maven Shell para un entorno listo para (re) usar Maven (que por cierto es increíble).
Así que al final, y lamento decirlo, no es realmente Maven lo que está matando su productividad, es el uso indebido de sus herramientas. Y si no estás contento con eso, bueno, qué puedo decir, no lo uses. Personalmente, uso Maven desde 2003 y nunca miré hacia atrás.