Pra que serve Maven, Ant, Ivy e Gradle? Qual suas diferenças?

Recentemente em alguns tutorias de desenvolvimento Java me deparei com o uso obrigatório de algumas dessas ferramentas, Maven, Ant, Ivy e Gradle.
Tentei usá-las sem sucesso e agora parei e decidi que preciso entender primeiro pra que elas servem.
Alguém poderia explicar isso DE MANEIRA FÁCIL sem empregar termos cabulosos e prévia compreensão de outros conceitos complexos (e se for inevitável, explicá-los também)?

Servem para automatizar o processo de compilar, empacotar e implantar seu projeto. Também servem para gerenciar as dependências que seu projeto tem com outros projetos e bibliotecas. Você declara que seu projeto depende da versão n biblioteca x e a ferramenta baixa da Internet e instala localmente.

Espero que o nível de cabulosidade tenha sido adequado.

Serve para gerenciar dependencias (bibliotecas), auxiliar no processo de build, e facilitar na integração com outras ferramentas.

Como assim?

Gerenciar dependencias: Sem uma dessas ferramentas, pra voce comecar a usar o hibernate, por exemplo, voce precisa ir na internet, baixar o seu jar e colocar no classpath do seu projeto. Com o Maven, você só adiciona umas linhas de código no pom.xml (Arquivo onde estará configurado todas as dependencias) e compilar o projeto com um comando maven: mvn clean install . O maven vai automaticamente baixar da internet e colocar no classpath do seu projeto

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.2.1.Final</version>
</dependency>

Auxiliar no processo de build:
Sem nenhuma ferramenta dessas, voce não consegue rodar todos seus testes unitários e de integração de uma vez, precisa ir de classe de teste em classe de teste e rodar eles inidividualmente (Run As > JUnit). Com o maven e os plugins do surefire e failsafe, quando rodar seu projeto (novamente mvn clean install), ele rodará todos os seus testes e dizerá se a build passou em todos os testes ou não

Facilitar na integracao com outras ferramentas
Há diversos e mais variados plugins para ele, uma delas como exemplo é um plugin do tomcat, onde vc configura ele no seu pom e consegue subir o projeto rodando mvn tomcat7:run , sem precisar jogar o war na sua pasta do tomcat, e subir ele manualmente

Bom, essas são as principais vantagens de usar uma ferramentas desse tipo, mas tem outras utilidades tb.

1 curtida

Uia, valeu galera, fez um pouquinho mais de sentido agora, principalmente na parte do download das bibliotecas automatizado.