From 3dd754ab90a00ca1d0bae127d1d6c6b9b70d9f02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=85=E8=8C=B6?= Date: Sat, 10 Sep 2022 00:58:13 +0800 Subject: [PATCH] Use version catalog to manage dependencies to make renovate work again (#412) Co-authored-by: Gabriel Ittner --- build-logic/build.gradle.kts | 19 ++++-------- build-logic/settings.gradle.kts | 17 +++++++++++ build-logic/src/main/kotlin/Versions.kt | 9 ------ build-logic/src/main/kotlin/shared.gradle.kts | 21 +++++++------ gradle/libs.versions.toml | 25 ++++++++++++++++ nexus/build.gradle.kts | 10 +++---- plugin/build.gradle.kts | 30 ++++++++++--------- settings.gradle.kts | 11 +++---- 8 files changed, 85 insertions(+), 57 deletions(-) create mode 100644 build-logic/settings.gradle.kts delete mode 100644 build-logic/src/main/kotlin/Versions.kt create mode 100644 gradle/libs.versions.toml diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts index 6ca943bf..435f4769 100644 --- a/build-logic/build.gradle.kts +++ b/build-logic/build.gradle.kts @@ -1,16 +1,9 @@ -plugins { - kotlin("jvm").version("1.4.32") - `kotlin-dsl` -} +plugins { `kotlin-dsl` } dependencies { - implementation(kotlin("gradle-plugin")) - implementation("org.jlleitschuh.gradle:ktlint-gradle:11.0.0") - implementation("com.vanniktech:gradle-maven-publish-plugin:0.21.0") -} - -repositories { - mavenCentral() - google() - gradlePluginPortal() + implementation(libs.kotlin.plugin) + implementation(libs.ktlint.plugin) + implementation(libs.maven.publish.plugin) + // https://github.com/gradle/gradle/issues/15383#issuecomment-779893192 + implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location)) } diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts new file mode 100644 index 00000000..3421a8e2 --- /dev/null +++ b/build-logic/settings.gradle.kts @@ -0,0 +1,17 @@ +@file:Suppress("UnstableApiUsage") + +rootProject.name = "build-logic" + +dependencyResolutionManagement { + repositories { + google() + mavenCentral() + gradlePluginPortal() + } + + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} diff --git a/build-logic/src/main/kotlin/Versions.kt b/build-logic/src/main/kotlin/Versions.kt deleted file mode 100644 index 01249270..00000000 --- a/build-logic/src/main/kotlin/Versions.kt +++ /dev/null @@ -1,9 +0,0 @@ -object Version { - const val junit = "4.13.2" - const val assertj = "3.19.0" - const val agp = "7.1.0" - const val dokka = "1.6.10" - const val okhttp = "4.10.0" - const val retrofit = "2.9.0" - const val moshi = "1.13.0" -} diff --git a/build-logic/src/main/kotlin/shared.gradle.kts b/build-logic/src/main/kotlin/shared.gradle.kts index 0988dbe8..261e37f3 100644 --- a/build-logic/src/main/kotlin/shared.gradle.kts +++ b/build-logic/src/main/kotlin/shared.gradle.kts @@ -1,3 +1,7 @@ +import org.gradle.accessors.dm.LibrariesForLibs + +val libs = the() + plugins { id("java-library") id("kotlin") @@ -15,17 +19,16 @@ repositories { google() } - -java.sourceCompatibility = JavaVersion.VERSION_1_8 -java.targetCompatibility = JavaVersion.VERSION_1_8 - -// Use the kotlin version from the stdlib -val kotlinVersion = KotlinVersion.CURRENT.toString() +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} configurations.all { + // Pin the kotlin version resolutionStrategy { - force("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion") - force("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion") - force("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion") + force(libs.kotlin.stdlib) + force(libs.kotlin.stdlib.jdk8) + force(libs.kotlin.reflect) } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 00000000..ff1d6722 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,25 @@ +[versions] +kotlin = "1.6.10" +moshi = "1.13.0" +retrofit = "2.9.0" + +[libraries] +okhttp = "com.squareup.okhttp3:okhttp:4.10.0" +dokka = "org.jetbrains.dokka:dokka-gradle-plugin:1.6.10" +assertj = "org.assertj:assertj-core:3.19.0" +junit = "junit:junit:4.13.2" + +android-plugin = "com.android.tools.build:gradle:7.1.0" +ktlint-plugin = "org.jlleitschuh.gradle:ktlint-gradle:11.0.0" +maven-publish-plugin = "com.vanniktech:gradle-maven-publish-plugin:0.21.0" + +kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } +kotlin-stdlib-jdk8 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } +kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" } +kotlin-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } + +moshi = { module = "com.squareup.moshi:moshi", version.ref = "moshi" } +moshi-codegen = { module = "com.squareup.moshi:moshi-kotlin-codegen", version.ref = "moshi" } + +retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" } +retrofit-converter-moshi = { module = "com.squareup.retrofit2:converter-moshi", version.ref = "retrofit" } diff --git a/nexus/build.gradle.kts b/nexus/build.gradle.kts index 03d4caff..cede62a5 100644 --- a/nexus/build.gradle.kts +++ b/nexus/build.gradle.kts @@ -3,10 +3,10 @@ plugins { } dependencies { - add("kapt", "com.squareup.moshi:moshi-kotlin-codegen:${Version.moshi}") + kapt(libs.moshi.codegen) - implementation("com.squareup.okhttp3:okhttp:${Version.okhttp}") - implementation("com.squareup.moshi:moshi:${Version.moshi}") - implementation("com.squareup.retrofit2:retrofit:${Version.retrofit}") - implementation("com.squareup.retrofit2:converter-moshi:${Version.retrofit}") + implementation(libs.okhttp) + implementation(libs.moshi) + implementation(libs.retrofit) + implementation(libs.retrofit.converter.moshi) } diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index 0e9fa68f..49ff41b5 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -3,7 +3,7 @@ plugins { id("java-gradle-plugin") } -configure { +gradlePlugin { plugins { create("mavenPublishPlugin") { id = "com.vanniktech.maven.publish" @@ -21,30 +21,33 @@ configure { } val integrationTestSourceSet = sourceSets.create("integrationTest") { - compileClasspath += sourceSets["main"].output + configurations["testRuntimeClasspath"] + compileClasspath += sourceSets["main"].output + configurations.testRuntimeClasspath runtimeClasspath += output + compileClasspath } val integrationTestImplementation = configurations.getByName("integrationTestImplementation") - .extendsFrom(configurations.getByName("testImplementation")) + .extendsFrom(configurations.testImplementation.get()) dependencies { api(gradleApi()) - api(kotlin("stdlib")) + api(libs.kotlin.stdlib) - compileOnly("org.jetbrains.dokka:dokka-gradle-plugin:${Version.dokka}") - compileOnly(kotlin("gradle-plugin")) - compileOnly("com.android.tools.build:gradle:${Version.agp}") + compileOnly(libs.dokka) + compileOnly(libs.kotlin.plugin) + compileOnly(libs.android.plugin) - implementation(project(":nexus")) + implementation(projects.nexus) testImplementation(gradleTestKit()) - testImplementation("junit:junit:${Version.junit}") - testImplementation("org.assertj:assertj-core:${Version.assertj}") + testImplementation(libs.junit) + testImplementation(libs.assertj) } val integrationTest by tasks.registering(Test::class) { - dependsOn("publishToMavenLocal", project(":nexus").tasks.named("publishToMavenLocal")) - mustRunAfter(tasks.named("test")) + dependsOn( + tasks.publishToMavenLocal, + projects.nexus.dependencyProject.tasks.publishToMavenLocal + ) + mustRunAfter(tasks.test) description = "Runs the integration tests." group = "verification" @@ -63,7 +66,6 @@ val integrationTest by tasks.registering(Test::class) { ) } -val check = tasks.named("check") -check.configure { +tasks.check { dependsOn(integrationTest) } diff --git a/settings.gradle.kts b/settings.gradle.kts index bad9a8ba..f172a2af 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,9 +1,6 @@ -pluginManagement { - repositories { - gradlePluginPortal() - } - @Suppress("UnstableApiUsage") - includeBuild("build-logic") -} +rootProject.name = "gradle-maven-publish-plugin" + include(":plugin") include(":nexus") +includeBuild("build-logic") +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")