Entrambi hanno il loro principale punto di forza e saranno entrambi sufficienti a soddisfare i tuoi bisogni. Ecco il mio piccolo confronto con entrambi, spero che ti permetta di scegliere.
Maven
Il più avanzato dei due e certamente uno degli strumenti di costruzione più avanzati che ho usato. Ma chiamarlo uno strumento costruito non lo descrive veramente come una delle funzionalità più innovative di Maven riguarda la gestione delle dipendenze. In breve, gestirà tutto il lavoro con le librerie esterne, le scaricherà per te, convaliderà che le loro dipendenze siano anche risolte e scaricate, in breve gestirà molti dettagli unti della costruzione di un sistema complesso.
Maven si basa anche su convenzioni su come si impaginano le cartelle del progetto per codice sorgente, risorse, test, ecc. Segui queste conversioni e funziona semplicemente (tm). Cerca di essere più intelligente di loro e ti darà pena oltre la comprensione. Ho esagerato un po 'qui, V3 è diventato molto più amichevole dei precedenti ma ti lascerà a volte grattarti la testa.
Ancora queste convenzioni rendono possibile creare un progetto molto rapidamente e con poche dichiarazioni nel tuo pom.xml (il punto di ingresso della build) sarai in grado di costruire il tuo progetto, eseguire tutti i tuoi test e creare un file jar semplicemente emettendo una singola istruzione da riga di comando (pacchetto mvn clean). Nessuno script, nessuna programmazione segue la convenzione.
Un altro effetto collaterale di queste convenzioni è che tutti i progetti di Maven sono fondamentalmente creati allo stesso modo ottenere un nuovo ragazzo per unirsi o scavare più a fondo in una dipendenza che sta agendo in su è un gioco da ragazzi.
La magia è probabilmente l'aspetto peggiore di lavorare con Maven. Se sei un maniaco del controllo, Maven ti sbilancia spesso. Ma attenersi ad essa e comprendere la magia ti ricompenserà pienamente con una produttività complessivamente molto più elevata.
Ant
Ant è più antica di Maven e non la gestisce tanto. Ant avrà pre-confezionato un sacco di attività che è necessario assemblare manualmente in uno script di build. Lo script è un mix tra dichiarativo xml e scripting. lo script Ant è in realtà completato da Turing, quindi puoi fare molto con esso, ma XML non è il mezzo migliore per scrivere una logica di scripting complessa.
Ant ti lascerà in controllo e ti fornirà già molte cose in scatola. Tuttavia questo controllo ha un costo e dovrai lavorare a fondo e inquadrare il tuo ambiente di costruzione.
Anche Ant non gestisce, almeno non in modo naturale, le dipendenze. ad esso è solo un'altra cartella classpath che è necessario popolare manualmente. ci sono modi per gestire questo problema attraverso altri sistemi come Ivy .
Ant con Ivy fornirà quasi tutta la potenza di Maven, ma ti lascerà molto più controllo sul tuo processo.
Detto questo, una volta realizzato il framing della build, Ant è abbastanza facile da usare e se hai strutturato correttamente i file build.xml è piuttosto semplice espandersi e ridimensionarlo. inquadra la tua costruzione in modo sbagliato e ti ritrovi a dover riscrivere tutto da zero solo per supportare quel secondo progetto.
Il meglio dei due mondi
Vai con Maven in quanto richiederà quasi la stessa quantità di lavoro da configurare come strumento, ma ti farà andare molto più veloce.
Leggi il libro di Maven che ti offre tutto ciò che ti serve per iniziare. Se a un certo punto hai bisogno di maggiore controllo puoi consultare il plug-in Maven Antrun . Ti permetterà di eseguire script antispam arbitrari pur avendo accesso a tutti gli ambienti e le convenzioni di Maven. Detto questo, molto probabilmente non ne avrai bisogno. Personalmente ho usato Maven per 6 anni e solo una volta ho dovuto usarlo.
Ci sono altri strumenti di compilazione per Java ma questi due (insieme a Ivy per completare Ant) ma non li ho provati quindi non posso commentarli qui.