Organização de dependências com version catalogs no gradle

Lucas Yuji Yoshimine
Android Dev BR
Published in
2 min readMar 26, 2022

--

Photo by Pixabay from Pexels

Ao iniciar um projeto, sempre é necessário ser implementado as suas dependências antes de seu desenvolvimento, entretanto é bastante comum essas implementações ficarem largadas, desorganizadas ou até esquecidas se caso não forem realizadas com devida atenção, por isso muitos desenvolvedores optam em criar e manter um gerenciador de dependências em seus projetos centralizando-os. Mas e se tivesse algo oficial do gradle que nos ajudasse nisso? 🤔

Por sorte, na versão 7.0 do gradle, há um novo jeito de gerenciar as suas dependências, o version catalogs.

Configurando novo projeto

primeiramente, para habilitar essa feature é necessário adicionar o seguinte trecho em settings.gradle.

enableFeaturePreview("VERSION_CATALOGS")

obs: essa implementação não é necessária se a versão do gradle for 7.4 ou superior.

Ao ativar a funcionalidade, agora é necessário a criação do arquivo em que será feito o gerenciamento das dependências. Nessa feature é utilizado o formato de arquivo TOML, que é especializado para configuração e legibilidade, com uma sintaxe mínima. Com essa informação, a adição desse arquivo deve realizada em gradle/libs.versions.toml.

Após adicionar o arquivo, para o gerenciamento das dependências são possiveis quatros tipos de configurações, sendo elas: versions, libraries, bundles e plugins.

  • [versions]: versionamento das dependências;
  • [libraries]: módulos de suas dependências, junto com a referência da versão;
  • [bundles]: grupos de libraries, permitindo implementar N dependências em uma única implementação;
  • [plugins]: ids de plugins, também contendo versionamento

Visualização exemplo de um projeto com dependências:

Ao efetuar a configuração das dependências, agora é preciso implementar em seu projeto, o seu uso é bastante simples:

Para implementar uma library, utilize apenas o prefixo libs e depois o nome da dependência setado em [libraries].

dependencies {
implementation libs.androidx.core
}

obs: utilize o ponto (.) ao invés de hífen (-) na implementação, como exemplo acima.

Também é possivel adicionar bundles da mesma forma que é implementado libraries, porém contendo um prefixo de bundles, ex:

dependencies {
implementation libs.bundles.coroutines
}

Por último, mas não menos importante, para adicionar um plugin, use o método alias com o plugin aplicado do gerenciador como parâmetro:

plugins {
alias(libs.plugins.android.application)
}

Conclusão

O gerenciamento de dependências, independente do projeto, É algo sempre necessário para manter uma fácil manutenção, legibilidade e centralizado. Com a nova feature do gradle, isso se torna cada vez mais fácil para adicionar e consequentemente aumenta a produtividade dos desenvolvedores. Para saber mais sobre a feature version catalog indico fortemente a documentação do gradle.

--

--