🌟

[Android]モジュール間で簡単にバージョン管理

2022/01/21に公開

Gradle7からの新機能として、モジュール間の依存ライブラリのバージョン管理を簡単にするversion catalogという機能があります。

https://docs.gradle.org/7.0.2/userguide/platforms.html

この方法を使用することで、今までトップレベルのbuild.gradleで管理してきたライブラリのバージョン管理がより簡単になります。

version catalogを使う

使うためには、2つのgradleファイルの修正が必要です。

setting.gradle

enableFeaturePreview("VERSION_CATALOGS")
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
    versionCatalogs {
        libs {
            alias("core-ktx").to("androidx.core:core-ktx:1.7.0")
        }
    }
}

アプリ・モジュールのbuild.gradle

dependencies {
	implementation(libs.core.ktx)
}

オプトインが必要

version catalogの機能はオプトインが必要になります。

enableFeaturePreview("VERSION_CATALOGS")

この記載がないと、versionCatalogsを書いてもビルドエラーとなります。

https://docs.gradle.org/7.0.2/userguide/feature_lifecycle.html#feature_preview

バージョンをまとめることができる

関係する幾つかのライブラリのバージョンを同じにしたい場合などは、下記のように記載します。

dependencyResolutionManagement {
    versionCatalogs {
        libs {
            version('groovy', '3.0.5')
            version('checkstyle', '8.37')
            alias('groovy-core').to('org.codehaus.groovy', 'groovy').versionRef('groovy')
            alias('groovy-json').to('org.codehaus.groovy', 'groovy-json').versionRef('groovy')
            alias('groovy-nio').to('org.codehaus.groovy', 'groovy-nio').versionRef('groovy')
        }
    }
}

バンドルすることができる

さらに、関係する幾つかのライブラリをまとめることもできます。

setting.gradle

dependencyResolutionManagement {
    versionCatalogs {
        libs {
					  ...
            bundle('groovy', ['groovy-core', 'groovy-json', 'groovy-nio'])
        }
    }
}

build.gradle

dependencies {
    implementation libs.bundles.groovy
}

Discussion