Organização de dependências com version catalogs no gradle
--
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.