Quali sono gli punti salienti delle principali differenze tra i due strumenti?
Come è potuto accadere che Apache si sia evoluto per creare due set di strumenti completamente separati che alla fine sono così simili nello scopo?
La prima cosa da capire è che il progetto Apache non è altro che un ombrello sotto il quale operano progetti indipendenti separati. Diverse squadre lavorano su diversi progetti. Mentre i singoli sviluppatori possono lavorare su più progetti, non esiste una tabella di marcia generale che includa Ant, Ivy e Maven.
Ant è arrivato prima. È stato progettato per essere un equivalente Java di Make. Mentre Make può creare progetti Java, è noioso: Make esistito per compilare un gruppo di unità di compilazione separatamente, quindi collegarle. Il modo Java è javac
compila tutto in un colpo solo, e ciò che chiamiamo "linking" si verifica realmente nei meandri della JVM in fase di runtime. Make non era lo strumento giusto per il lavoro: un Makefile per Java è fondamentalmente uno o due target ( javac
, jar
).
Ant ha aggiunto un po 'di struttura in cima a Make, ma non ha sostanzialmente modificato il processo.
Dopo un po 'la community si rese conto che cercare file jar non era divertente. Inoltre, non c'era un modo standard per comporre i progetti. Senza coerenza, lo sviluppo di Java era un casino. Maven è stato progettato per risolvere questi problemi: porterebbe una struttura di progetto comune e automatizzerebbe la ricerca dei file jar.
Tuttavia, Ant era ancora molto utile. Alcuni progetti si prestano maggiormente alla natura ad hoc dei processi di Ant. Alcuni progetti non stanno compilando il codice. Alcuni progetti erano vecchi ed era improbabile che qualcuno li "aggiornasse" su Maven.
Arriva Ivy: aggiunge la gestione delle dipendenze a Ant, dando ai progetti il meglio dei due mondi. Puoi mantenere i tuoi script legacy o l'ambiente altamente personalizzato, ma ottenere la funzione più importante di Maven: gestione delle dipendenze.