Gradle - Visão geral
"Gradle is an open source build automation system"
Ant e Maven tiveram um sucesso considerável no mercado JAVA. Ant foi a primeira ferramenta de construção lançada em 2000 e é desenvolvida com base na ideia de programação procedural. Posteriormente, ele foi aprimorado com a capacidade de aceitar plug-ins e gerenciamento de dependências na rede com a ajuda do Apache-IVY. A principal desvantagem é o XML como um formato para escrever scripts de construção, ser hierárquico não é bom para a programação procedural e o XML tende a se tornar excessivamente grande.
O Maven foi lançado em 2004. Ele vem com muitas melhorias em relação ao ANT. Ele muda sua estrutura e continua usando XML para escrever especificações de construção. O Maven depende das convenções e é capaz de fazer download das dependências pela rede. Os principais benefícios do maven é seu ciclo de vida. Enquanto segue o mesmo ciclo de vida para vários projetos continuamente. Isso tem um custo de flexibilidade. O Maven também enfrenta alguns problemas no gerenciamento de dependências. Ele não lida bem com conflitos entre versões da mesma biblioteca e scripts de construção personalizados complexos são realmente mais difíceis de escrever no maven do que no ANT.
Finalmente, o Gradle entrou em cena em 2012. O Gradle traz alguns recursos eficientes de ambas as ferramentas.
Características do Gradle
A seguir está a lista de recursos que o Gradle oferece.
Declarative builds and build-by-convention- O Gradle está disponível com uma linguagem específica de domínio (DSL) separada com base na linguagem Groovy. O Gradle fornece elementos de linguagem declarativos. Esses elementos também fornecem suporte de construção por convenção para Java, Groovy, OSGI, Web e Scala.
Language for dependency based programming - A linguagem declarativa está no topo de um gráfico de tarefa de propósito geral, que você pode aproveitar totalmente em sua construção.
Structure your build- O Gradle finalmente permite que você aplique princípios de design comuns à sua construção. Ele lhe dará uma estrutura perfeita para a construção, de modo que você possa projetar uma construção bem estruturada e de fácil manutenção.
Deep API - Usando esta API, permite monitorar e personalizar sua configuração e comportamento de execução em seu núcleo.
Gradle scales - O Gradle pode aumentar facilmente sua produtividade, desde compilações de projeto simples e únicas até compilações de vários projetos corporativos enormes.
Multi-project builds- O Gradle oferece suporte para compilações de vários projetos e para compilações parciais. Se você criar um subprojeto, o Gradle se encarregará de criar todos os subprojetos dos quais ele depende.
Different ways to manage your builds - Gradle oferece suporte a diferentes estratégias para gerenciar suas dependências.
Gradle is the first build integration tool- Gradle totalmente compatível com suas tarefas ANT, infraestrutura de repositório Maven e lvy para publicação e recuperação de dependências. O Gradle também fornece um conversor para transformar um Maven pom.xml em script Gradle.
Ease of migration- O Gradle pode se adaptar facilmente a qualquer estrutura que você tenha. Portanto, você sempre pode desenvolver sua compilação do Gradle no mesmo branch em que pode criar o script ativo.
Gradle Wrapper- O Gradle Wrapper permite que você execute compilações do Gradle em máquinas onde o Gradle não está instalado. Isso é útil para integração contínua de servidores.
Free open source - Gradle é um projeto de código aberto e licenciado pela Apache Software License (ASL).
Groovy- O script de construção do Gradle é escrito em Groovy. Todo o design do Gradle é orientado para ser usado como uma linguagem, não como uma estrutura rígida. E o Groovy permite que você escreva seu próprio script com algumas abstrações. Toda a API Gradle foi totalmente projetada na linguagem Groovy.
Por que Groovy?
A API Gradle completa é projetada usando a linguagem Groovy. Esta é uma vantagem de um DSL interno sobre XML. Gradle é uma ferramenta de criação de uso geral em sua essência; seu foco principal são projetos Java. Em tais projetos, os membros da equipe estarão muito familiarizados com Java e é melhor que uma construção seja o mais transparente possível para todos os membros da equipe.
Linguagens como Python, Groovy ou Ruby são melhores para construir framework. O motivo da escolha do Groovy é que ele oferece, de longe, a maior transparência para quem usa Java. A sintaxe base do Groovy é a mesma do Java. O Groovy oferece muito mais além disso.