Quali sono i 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 separati e indipendenti. Team diversi lavorano su progetti diversi. Mentre i singoli sviluppatori possono lavorare su più progetti, non esiste una tabella di marcia globale che includa Ant, Ivy e Maven.
La formica venne per prima. È stato progettato per essere un equivalente Java di Make. Mentre Make può costruire progetti Java, è noioso: Make è esistito per compilare un gruppo di unità di compilazione separatamente, quindi collegarle. Il modo Java è di javac
compilare tutto in una volta sola e ciò che chiamiamo "collegamento" si verifica realmente nelle viscere della JVM in fase di esecuzione. 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 comunità ha capito che cercare i file jar non era divertente. Inoltre, non esisteva un modo standard per comporre progetti. Senza coerenza, lo sviluppo di Java era un disastro. Maven è stato progettato per risolvere questi problemi: porterebbe una struttura di progetto comune e automatizzerebbe la ricerca dei file jar.
Tuttavia, Ant era ancora davvero utile. Alcuni progetti si prestano di più 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" a Maven.
Arriva Ivy: aggiunge la gestione delle dipendenze a Ant, dando ai progetti il meglio di entrambi i mondi. Puoi conservare i tuoi script legacy o l'ambiente altamente personalizzato, ma ottenere la caratteristica più importante di Maven: la gestione delle dipendenze.