Capire le dipendenze dei pacchetti non è poi così difficile. Raramente lo fai comunque. Probabilmente una volta durante l'installazione del progetto e pochi altri durante gli aggiornamenti. Con Maven finirai per correggere dipendenze non corrispondenti, poms scritti male e fare comunque esclusioni di pacchetti.
Non è così difficile ... per i progetti di giocattoli. Ma i progetti a cui lavoro ne hanno molti, davvero molti, e sono molto felice di averli in modo transitorio, per avere uno schema di denominazione standardizzato per loro. Gestire tutto manualmente a mano sarebbe un incubo.
E sì, a volte devi lavorare sulla convergenza delle dipendenze. Ma pensaci due volte, questo non è inerente a Maven, questo è inerente a qualsiasi sistema che utilizza dipendenze (e sto parlando di dipendenze Java in generale qui).
Quindi con Ant, devi fare lo stesso lavoro tranne che devi fare tutto manualmente: prendere una versione del progetto A e le sue dipendenze, prendere una versione del progetto B e le sue dipendenze, capire te stesso quali versioni esatte usano, controllando che non si sovrappongano, controllando che non siano incompatibili, ecc. Benvenuti all'inferno.
D'altra parte, Maven supporta la gestione delle dipendenze e le recupererà in modo transitorio per me e mi fornisce gli strumenti di cui ho bisogno per gestire la complessità inerente alla gestione delle dipendenze : posso analizzare un albero delle dipendenze, controllare le versioni utilizzate nelle dipendenze transitive, escluderne alcune loro , se necessario, controllare il convergere in tutto moduli, ecc non c'è magia. Ma almeno hai supporto.
E non dimenticare che la gestione delle dipendenze è solo una piccola parte di ciò che offre Maven, c'è molto di più (nemmeno menzionando gli altri strumenti che si integrano perfettamente con Maven, ad esempio Sonar ).
Ciclo lento FIX-COMPILE-DEPLOY-DEBUG, che uccide la produttività. Questa è la mia lamentela principale. Apporti una modifica, devi attendere l'avvio di build maven e attendere che venga distribuito. Nessuna distribuzione a caldo di sorta.
Innanzitutto, perché usi Maven in questo modo? Io non. Uso il mio IDE per scrivere test, codice fino a quando non passano, refactoring, distribuzione, distribuzione a caldo ed esecuzione di una build Maven locale quando ho finito, prima di impegnarmi, per assicurarmi di non interrompere la build continua.
In secondo luogo, non sono sicuro che l'uso di Ant renderebbe le cose molto migliori. E per la mia esperienza, le build modulari di Maven che utilizzano dipendenze binarie mi danno tempi di costruzione più veloci rispetto alle tipiche build monolitiche di formiche. In ogni caso, dai un'occhiata a Maven Shell per un ambiente Maven pronto per (ri) usare (che è fantastico a proposito).
Quindi alla fine, e mi dispiace dirlo, non è proprio Maven che sta uccidendo la tua produttività, ma stai abusando dei tuoi strumenti. E se non sei soddisfatto, beh, cosa posso dire, non usarlo. Personalmente, sto usando Maven dal 2003 e non ho mai guardato indietro.