Entenda o que são build tools do mundo Java

Durante o aprendizado, todo desenvolvedor Java acaba entrando em situações um tanto quanto complexas em seus projetos, seja de estudo, trabalhos acadêmicos ou até mesmo no trabalho.

Dentre elas, temos alguns exemplos de cenários comuns no dia a dia:

  • Estruturar arquivos fonte
  • Uso de uma nova biblioteca
  • Realização de testes
  • Incompatibilidade entre IDEs
  • Empacotamento e distribuição da aplicação

Considerando todos esses cenários entre outros, percebemos que se trata de tarefas comuns em diversos projetos da atualidade, mas, ao mesmo tempo, vemos que são rotinas um tanto quanto trabalhosas, ainda mais se percebemos que que elas tendem a ser executadas constantemente…

Pensando justamente no trabalho que temos nessas tarefas que não podemos simplesmente discartar, foram criadas algumas ferramentas que automatizam todos esses processos, essas ferramentas são conhecidas como build tools ou, no português bem forçado, ferramentas de construção.

O que é uma build tool?

Uma build tool, basicamente, é um sistema que permite automatizar todas as tarefas rotineiras de um projeto de uma forma organizada e que evite que o desenvolvedor tenha que perder tempo.

Em outras palavras, adicionar uma nova biblioteca, realização de testes, empacotamento e deploy, ou até mesmo, a compatibilidade entre as diversas IDEs são tarefas facilmente resolvidas com uma build tool, ou seja, ao invés de você desenvolvedor se responsabilizar por todos esses passos, as build tools farão isso pra você!

Legal, mas quais são as build tools existentes?

Atualmente temos diversas build tools disponíveis para projetos Java, sendo que algumas são mais utilizadas do que outras, seja por questões de aceitação, facilidade de uso e robustez, vamos conhecer algumas delas:

Ant

Dentre as ferramentas mais conhecidas, o Ant foi uma das primeiras a aparecer. Sendo assim, muitos projetos já foram desenvolvidos usando essa ferramenta como base.

Embora tenha ganhado bastante espaço durante um tempo, o Ant acabou ficando ultrapassado, justamente por exigir muitas configurações manuais do que outras build tools.

Em outras palavras, atualmente, isto é, para projetos novos, dificilmente alguém usará o Ant como o build tool, justamente por existir outras build tools mais robustas e de fácil operação.

Vale a pena estudar? Ainda existem projetos sendo mantidos usando o Ant como a build tool, porém, a tendência é que ele entre em desuso com o tempo, pois existem outras ferramentas que fazem o mesmo com bem menos esforço, e também, são bem mais robustas por entregar features a mais.

Resumindo, recomendo que estude apenas se precisar atuar em um projeto que utilize o Ant.

Maven

Dentre as ferramentas de build o Maven é (talvez) a mais famosa. Ele possui as mesmas features que o Ant e, além de uma build tool, é considerado como um project manager (gerenciador de projeto).

Os principais motivos pelo uso do Maven é justamente pela facilidade e quantidade de features que ele provê, ou seja, é possível realizar o mesmo resultado no Ant e muito mais, sem muito esforço.

Além disso, um dos grandes atrativos é justamente a estrutura por meio do Project Object Model (POM) que é um arquivo em XML que define toda estrutura do projeto.

Sendo mais objetivo, basta ter acesso ao arquivo POM, que o seu projeto será o mesmo para todos independentemente da IDE!

Por esses motivos e muitos outros, o Maven é uma excelente alternativa para desenvolver seus projetos, principalmente em equipe.

Vale a pena estudar? A grande maioria dos projetos e frameworks atuais são baseados no Maven, ou seja, ele é uma excelente escolha de estudo, pois é muito provável que você tenha que desenvolver baseando-se nessa ferramenta.

Vale lembrar que até mesmo para realizar deploy em ferramentas muito famosas como Google App Engine, Heroku ou Amazon Web Services, provavelmente você terá que lidar com o Maven.

Gradle

Vimos que dentre as build tools o Maven é uma das melhores alternativas para o build de um projeto, entretanto, além de ser uma ferramenta open source, o Gradle é o seu principal rival da atualidade, justamente por permitir fazer as mesmas coisas no Maven, porém, com uma visão mais simplificada.

Da mesma forma que o Maven, o Gradle não é apenas uma build tool, ele é considerado como um build system (sistema de construção), justamente por disponibilizar diversas features de build para o desenvolvedor de forma padronizada e de fácil uso. Dentre elas a que mais se destaca é a multi project.

Vale lembrar que o Gradle é a ferramenta mais recente dentre as citadas e, por se tratar de uma ferramenta open source, a quantidade de updates e upgrades tendem a serem maiores do que as demais ferramentas, portanto, a chance de ser uma ferramenta cada vez mais moderna é maior.

Vale a pena estudar? Da mesma forma como o Maven, existem muitos projetos e frameworks desenvolvidos em Gradle. Considerando o desenvolvimento de novos projetos, pode valer apena estudar o Gradle, pois é uma ferramenta bem robusta e simples de usar.

Além disso, se você é ou pretender atuar como desenvolvedor Android, é importante saber que o Gradle é a ferramenta adotada pela Google, ou seja, todos os projetos Android que forem desenvolvidos por meio do Android Studio (principal IDE para Apps Android) serão baseados nele.

Qual a melhor build tool para o meu projeto?

Cada ferramenta possui suas vantagens e desvantagens, portanto para esse tipo de pergunta sempre haverá aquela resposta: “Depende”.

Ou melhor dizendo, você sempre terá que avaliar o seu cenário atual, seja um projeto que você irá manter, ou um projeto novo, ou um projeto web ou Android… Veja que são várias possibilidades, a partir do momento que você identifica o seu cenário atual.

Identificando o seu cenário atual, é possível partir para o próximo passo que é verificar quais das ferramentas entregam as features que você deseja. Por exemplo, para um projeto web, basicamente existem algumas rotinas comuns tais como:

  • Dependências das libs e frameworks.
  • Execução de testes.
  • Deployment para um servidor de aplicação.
  • Modularização do projeto.

Tais tarefas podem ser mais fáceis de serem configuradas em uma ferramenta do que em outra, como é o caso de plugins disponibilizados que automatizam boa parte dos processos necessários, como também, a busca de solução para uma possível necessidade, nesse quesito, a comunidade conta bastante

Portanto, considere também o quão grande é a comunidade da ferramenta que pretende usar, pois dessa forma será bem mais fácil de tirar dúvidas se for necessário.

Além de realizar essa analise, recomendo que também dê uma olhada em páginas que comparam as ferramentas que pretende usar, como por exemplo essa comparação do Gradle e Maven. Então, a partir delas você pode tirar suas conclusões.

É importante saber que apenas uma única fonte não é o suficiente, como mencionei, essa é uma página do Gradle comparando com o Maven. Em outras palavras, com toda a certeza, ela vai puxar mais sardinha para o Gradle e não vai apresentar pra você o que o Maven tem de melhor para entregar.

Conclusão

Independentemente da build tool que escolher é importante lembrar que o objetivo principal desse tipo de ferramenta é fazer com que o desenvolvedor economize tempo em tarefas de configuração, portanto, quanto mais fácil e automatizado for o uso da ferramenta que optar, provavelmente, melhor será.

O que achou sobre a ideia de build tools? Nunca tinha ouvido falar? Então deixe o seu comentário sobre o que achou e aproveite para compartilhar suas dúvidas também :)

Show your support

Clapping shows how much you appreciated Alex Felipe’s story.