Quais são os destaques das principais diferenças entre as duas ferramentas?
Como aconteceu que o Apache evoluiu para criar dois conjuntos de ferramentas completamente separados que são, em última análise, de propósito tão semelhante?
A primeira coisa a entender é que o projeto Apache nada mais é do que um guarda-chuva sob o qual projetos independentes e independentes operam. Equipes diferentes trabalham em projetos diferentes. Embora os desenvolvedores individuais possam trabalhar em vários projetos, não há um roteiro geral que incorpore Ant, Ivy e Maven.
Ant veio primeiro. Foi projetado para ser um equivalente em Java do Make. Enquanto o Make pode criar projetos Java, é tedioso: o Make existia para compilar várias unidades de compilação separadamente e depois vinculá-las. A maneira Java é javac
compilar tudo de uma só vez, e o que chamamos de "vinculação" realmente ocorre nas entranhas da JVM em tempo de execução. Make não era a ferramenta certa para o trabalho: um Makefile para Java é basicamente um ou dois destinos ( javac
, jar
).
Ant adicionou um pouco de estrutura sobre o Make, mas não alterou fundamentalmente o processo.
Depois de um tempo, a comunidade percebeu que caçar arquivos jar não era divertido. Além disso, não havia uma maneira padrão de compor projetos. Sem consistência, o desenvolvimento Java foi uma bagunça. O Maven foi projetado para resolver esses problemas: traria uma estrutura de projeto comum e automatizaria a busca de arquivos jar.
No entanto, Ant ainda era realmente útil. Alguns projetos se prestam mais à natureza ad-hoc dos processos do Ant. Alguns projetos não estão compilando código. Alguns projetos eram antigos e era improvável que alguém os "atualizasse" para o Maven.
A seguir vem Ivy: adiciona gerenciamento de dependência ao Ant, dando aos projetos o melhor dos dois mundos. Você pode manter seus scripts herdados ou um ambiente altamente personalizado, mas obtém o recurso mais importante do Maven: gerenciamento de dependências.