From 2b00e021e2aee0434fc5da963825ff7f1847b292 Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Thu, 27 Jun 2024 19:38:46 +0900 Subject: [PATCH 1/6] Add new plugins - hilt-plugin - jacoco - kotlin-android Change-Id: Id6c32a6ebbd0b61b589b860facacddd10c9146ec --- gradle/libs.versions.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e0b938e75..13600841d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -164,6 +164,9 @@ firebase-crashlytics = { id = "com.google.firebase.crashlytics", version.ref = " firebase-perf = { id = "com.google.firebase.firebase-perf", version.ref = "firebasePerfPlugin" } gms = { id = "com.google.gms.google-services", version.ref = "gmsPlugin" } hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } +hilt-plugin = { id = "dagger.hilt.android.plugin", version.ref = "hilt"} +jacoco = { id = "jacoco", version.ref = "jacoco"} +kotlin-android = {id = "org.jetbrains.kotlin.android", version.ref = "kotlin"} kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } From b0388bbfc71b7b5769bf6cc728aa4ae52d528cb5 Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Thu, 27 Jun 2024 19:39:14 +0900 Subject: [PATCH 2/6] Apply version catalog in the `plugin`. Change-Id: I471d999ca3bd9c9246b24565d6e2f57bde010225 --- .../AndroidApplicationComposeConventionPlugin.kt | 5 +++-- .../main/kotlin/AndroidApplicationConventionPlugin.kt | 10 +++++----- .../AndroidApplicationFirebaseConventionPlugin.kt | 6 +++--- .../kotlin/AndroidApplicationJacocoConventionPlugin.kt | 3 ++- .../src/main/kotlin/AndroidFeatureConventionPlugin.kt | 4 ++-- .../src/main/kotlin/AndroidHiltConventionPlugin.kt | 4 ++-- .../kotlin/AndroidLibraryComposeConventionPlugin.kt | 5 +++-- .../src/main/kotlin/AndroidLibraryConventionPlugin.kt | 6 +++--- .../kotlin/AndroidLibraryJacocoConventionPlugin.kt | 4 ++-- .../src/main/kotlin/AndroidRoomConventionPlugin.kt | 6 +++--- .../src/main/kotlin/AndroidTestConventionPlugin.kt | 5 +++-- .../src/main/kotlin/JvmLibraryConventionPlugin.kt | 5 +++-- 12 files changed, 34 insertions(+), 29 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationComposeConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationComposeConventionPlugin.kt index a8b1b1779..ef709ea96 100644 --- a/build-logic/convention/src/main/kotlin/AndroidApplicationComposeConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidApplicationComposeConventionPlugin.kt @@ -16,6 +16,7 @@ import com.android.build.api.dsl.ApplicationExtension import com.google.samples.apps.nowinandroid.configureAndroidCompose +import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.apply @@ -24,8 +25,8 @@ import org.gradle.kotlin.dsl.getByType class AndroidApplicationComposeConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { - apply(plugin = "com.android.application") - apply(plugin = "org.jetbrains.kotlin.plugin.compose") + apply(plugin = libs.findPlugin("android-application").get().get().pluginId) + apply(plugin = libs.findPlugin("compose").get().get().pluginId) val extension = extensions.getByType() configureAndroidCompose(extension) diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt index f4d5bb0d0..d38f8593f 100644 --- a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt @@ -21,6 +21,7 @@ import com.google.samples.apps.nowinandroid.configureBadgingTasks import com.google.samples.apps.nowinandroid.configureGradleManagedDevices import com.google.samples.apps.nowinandroid.configureKotlinAndroid import com.google.samples.apps.nowinandroid.configurePrintApksTask +import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.configure @@ -30,10 +31,10 @@ class AndroidApplicationConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { with(pluginManager) { - apply("com.android.application") - apply("org.jetbrains.kotlin.android") - apply("nowinandroid.android.lint") - apply("com.dropbox.dependency-guard") + apply(libs.findPlugin("android-application").get().get().pluginId) + apply(libs.findPlugin("kotlin-android").get().get().pluginId) + apply(libs.findPlugin("nowinandroid.android.lint").get().get().pluginId) + apply(libs.findPlugin("dependencyGuard").get().get().pluginId) } extensions.configure { @@ -49,5 +50,4 @@ class AndroidApplicationConventionPlugin : Plugin { } } } - } diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationFirebaseConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationFirebaseConventionPlugin.kt index 422592b8a..a3da7de86 100644 --- a/build-logic/convention/src/main/kotlin/AndroidApplicationFirebaseConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidApplicationFirebaseConventionPlugin.kt @@ -26,9 +26,9 @@ class AndroidApplicationFirebaseConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { with(pluginManager) { - apply("com.google.gms.google-services") - apply("com.google.firebase.firebase-perf") - apply("com.google.firebase.crashlytics") + apply(libs.findPlugin("gms").get().get().pluginId) + apply(libs.findPlugin("firebase-perf").get().get().pluginId) + apply(libs.findPlugin("firebase-crashlytics").get().get().pluginId) } dependencies { diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationJacocoConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationJacocoConventionPlugin.kt index ac385b0d9..fec4ca183 100644 --- a/build-logic/convention/src/main/kotlin/AndroidApplicationJacocoConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidApplicationJacocoConventionPlugin.kt @@ -17,6 +17,7 @@ import com.android.build.api.variant.ApplicationAndroidComponentsExtension import com.android.build.gradle.internal.dsl.BaseAppModuleExtension import com.google.samples.apps.nowinandroid.configureJacoco +import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.getByType @@ -24,7 +25,7 @@ import org.gradle.kotlin.dsl.getByType class AndroidApplicationJacocoConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { - pluginManager.apply("jacoco") + pluginManager.apply(libs.findPlugin("jacoco").get().get().pluginId) val androidExtension = extensions.getByType() androidExtension.buildTypes.configureEach { diff --git a/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt index 52c337521..9583ece7d 100644 --- a/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt @@ -26,8 +26,8 @@ class AndroidFeatureConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { pluginManager.apply { - apply("nowinandroid.android.library") - apply("nowinandroid.android.hilt") + apply(libs.findPlugin("nowinandroid.android.library").get().get().pluginId) + apply(libs.findPlugin("nowinandroid.android.hilt").get().get().pluginId) } extensions.configure { defaultConfig { diff --git a/build-logic/convention/src/main/kotlin/AndroidHiltConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidHiltConventionPlugin.kt index fcb4f823e..617ff9ff2 100644 --- a/build-logic/convention/src/main/kotlin/AndroidHiltConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidHiltConventionPlugin.kt @@ -23,8 +23,8 @@ class AndroidHiltConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { with(pluginManager) { - apply("com.google.devtools.ksp") - apply("dagger.hilt.android.plugin") + apply(libs.findPlugin("ksp").get().get().pluginId) + apply(libs.findPlugin("hilt-plugin").get().get().pluginId) } dependencies { diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryComposeConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryComposeConventionPlugin.kt index 19fabf549..0339d0c9d 100644 --- a/build-logic/convention/src/main/kotlin/AndroidLibraryComposeConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidLibraryComposeConventionPlugin.kt @@ -16,6 +16,7 @@ import com.android.build.gradle.LibraryExtension import com.google.samples.apps.nowinandroid.configureAndroidCompose +import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.apply @@ -24,8 +25,8 @@ import org.gradle.kotlin.dsl.getByType class AndroidLibraryComposeConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { - apply(plugin = "com.android.library") - apply(plugin = "org.jetbrains.kotlin.plugin.compose") + apply(plugin = libs.findPlugin("android-library").get().get().pluginId) + apply(plugin = libs.findPlugin("compose").get().get().pluginId) val extension = extensions.getByType() configureAndroidCompose(extension) diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt index be5b41d07..d5b48ffa4 100644 --- a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt @@ -32,9 +32,9 @@ class AndroidLibraryConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { with(pluginManager) { - apply("com.android.library") - apply("org.jetbrains.kotlin.android") - apply("nowinandroid.android.lint") + apply(libs.findPlugin("android-library").get().get().pluginId) + apply(libs.findPlugin("kotlin-android").get().get().pluginId) + apply(libs.findPlugin("nowinandroid.android.lint").get().get().pluginId) } extensions.configure { diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryJacocoConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryJacocoConventionPlugin.kt index 6f2ff60c5..75a5fbf61 100644 --- a/build-logic/convention/src/main/kotlin/AndroidLibraryJacocoConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidLibraryJacocoConventionPlugin.kt @@ -15,9 +15,9 @@ */ import com.android.build.api.dsl.LibraryExtension -import com.android.build.api.variant.ApplicationAndroidComponentsExtension import com.android.build.api.variant.LibraryAndroidComponentsExtension import com.google.samples.apps.nowinandroid.configureJacoco +import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.getByType @@ -25,7 +25,7 @@ import org.gradle.kotlin.dsl.getByType class AndroidLibraryJacocoConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { - pluginManager.apply("jacoco") + pluginManager.apply(libs.findPlugin("jacoco").get().get().pluginId) val androidExtension = extensions.getByType() androidExtension.buildTypes.configureEach { diff --git a/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt index dbca79a5e..660eb8867 100644 --- a/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt @@ -26,8 +26,8 @@ class AndroidRoomConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { - pluginManager.apply("androidx.room") - pluginManager.apply("com.google.devtools.ksp") + pluginManager.apply(libs.findPlugin("room").get().get().pluginId) + pluginManager.apply(libs.findPlugin("ksp").get().get().pluginId) extensions.configure { arg("room.generateKotlin", "true") @@ -47,4 +47,4 @@ class AndroidRoomConventionPlugin : Plugin { } } } -} \ No newline at end of file +} diff --git a/build-logic/convention/src/main/kotlin/AndroidTestConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidTestConventionPlugin.kt index e48d75757..a5182e17c 100644 --- a/build-logic/convention/src/main/kotlin/AndroidTestConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidTestConventionPlugin.kt @@ -17,6 +17,7 @@ import com.android.build.gradle.TestExtension import com.google.samples.apps.nowinandroid.configureGradleManagedDevices import com.google.samples.apps.nowinandroid.configureKotlinAndroid +import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.configure @@ -25,8 +26,8 @@ class AndroidTestConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { with(pluginManager) { - apply("com.android.test") - apply("org.jetbrains.kotlin.android") + apply(libs.findPlugin("android-test").get().get().pluginId) + apply(libs.findPlugin("kotlin-android").get().get().pluginId) } extensions.configure { diff --git a/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt index 35932c835..8e304d25d 100644 --- a/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt @@ -15,6 +15,7 @@ */ import com.google.samples.apps.nowinandroid.configureKotlinJvm +import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project @@ -22,8 +23,8 @@ class JvmLibraryConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { with(pluginManager) { - apply("org.jetbrains.kotlin.jvm") - apply("nowinandroid.android.lint") + apply(libs.findPlugin("kotlin-jvm").get().get().pluginId) + apply(libs.findPlugin("nowinandroid.android.lint").get().get().pluginId) } configureKotlinJvm() } From 0cb3128bf2407c84a04c2d84b0026970e9b3c45e Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Sun, 11 Aug 2024 13:40:45 +0900 Subject: [PATCH 3/6] Create VersionCatalogExtensions - VersionCatalog.getPlugin Change-Id: I9731877a9a583d3428b600bfdbcffc016facd768 --- .../nowinandroid/VersionCatalogExtensions.kt | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/VersionCatalogExtensions.kt diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/VersionCatalogExtensions.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/VersionCatalogExtensions.kt new file mode 100644 index 000000000..71c7adc8f --- /dev/null +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/VersionCatalogExtensions.kt @@ -0,0 +1,26 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.samples.apps.nowinandroid + +import org.gradle.api.artifacts.VersionCatalog +import kotlin.jvm.optionals.getOrNull + +/** + * Get a Plugin from version catalog using an alias. + */ +fun VersionCatalog.getPlugin(alias: String): String = + findPlugin(alias).getOrNull()?.get()?.pluginId ?: "" From 35b847ae390124ee86b2b203588f1e00ad5befc2 Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Sun, 11 Aug 2024 13:57:38 +0900 Subject: [PATCH 4/6] Use getPlugins extension to get a plugin with an alias. Change-Id: Iaf06e86fdb8f98d1537bbbdbb05d22c38f6551b4 --- .../AndroidApplicationComposeConventionPlugin.kt | 5 +++-- .../kotlin/AndroidApplicationConventionPlugin.kt | 12 ++++++------ .../AndroidApplicationFirebaseConventionPlugin.kt | 11 ++++++----- .../AndroidApplicationJacocoConventionPlugin.kt | 4 +++- .../main/kotlin/AndroidFeatureConventionPlugin.kt | 14 +++++++++----- .../AndroidLibraryComposeConventionPlugin.kt | 5 +++-- .../main/kotlin/AndroidLibraryConventionPlugin.kt | 14 ++++++++------ .../kotlin/AndroidLibraryJacocoConventionPlugin.kt | 4 +++- .../src/main/kotlin/AndroidRoomConventionPlugin.kt | 6 ++++-- .../src/main/kotlin/AndroidTestConventionPlugin.kt | 9 ++++----- .../src/main/kotlin/HiltConventionPlugin.kt | 6 ++++-- .../src/main/kotlin/JvmLibraryConventionPlugin.kt | 8 ++++---- 12 files changed, 57 insertions(+), 41 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationComposeConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationComposeConventionPlugin.kt index ef709ea96..1cdc90393 100644 --- a/build-logic/convention/src/main/kotlin/AndroidApplicationComposeConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidApplicationComposeConventionPlugin.kt @@ -16,6 +16,7 @@ import com.android.build.api.dsl.ApplicationExtension import com.google.samples.apps.nowinandroid.configureAndroidCompose +import com.google.samples.apps.nowinandroid.getPlugin import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project @@ -25,8 +26,8 @@ import org.gradle.kotlin.dsl.getByType class AndroidApplicationComposeConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { - apply(plugin = libs.findPlugin("android-application").get().get().pluginId) - apply(plugin = libs.findPlugin("compose").get().get().pluginId) + apply(plugin = libs.getPlugin("android.application")) + apply(plugin = libs.getPlugin("compose")) val extension = extensions.getByType() configureAndroidCompose(extension) diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt index d38f8593f..964809206 100644 --- a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt @@ -21,21 +21,21 @@ import com.google.samples.apps.nowinandroid.configureBadgingTasks import com.google.samples.apps.nowinandroid.configureGradleManagedDevices import com.google.samples.apps.nowinandroid.configureKotlinAndroid import com.google.samples.apps.nowinandroid.configurePrintApksTask +import com.google.samples.apps.nowinandroid.getPlugin import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.getByType class AndroidApplicationConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { - with(pluginManager) { - apply(libs.findPlugin("android-application").get().get().pluginId) - apply(libs.findPlugin("kotlin-android").get().get().pluginId) - apply(libs.findPlugin("nowinandroid.android.lint").get().get().pluginId) - apply(libs.findPlugin("dependencyGuard").get().get().pluginId) - } + apply(plugin = libs.getPlugin("android.application")) + apply(plugin = libs.getPlugin("kotlin.android")) + apply(plugin = libs.getPlugin("nowinandroid.android.lint")) + apply(plugin = libs.getPlugin("dependencyGuard")) extensions.configure { configureKotlinAndroid(this) diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationFirebaseConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationFirebaseConventionPlugin.kt index a3da7de86..edbf0ba0f 100644 --- a/build-logic/convention/src/main/kotlin/AndroidApplicationFirebaseConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidApplicationFirebaseConventionPlugin.kt @@ -16,20 +16,21 @@ import com.android.build.api.dsl.ApplicationExtension import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension +import com.google.samples.apps.nowinandroid.getPlugin import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies class AndroidApplicationFirebaseConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { - with(pluginManager) { - apply(libs.findPlugin("gms").get().get().pluginId) - apply(libs.findPlugin("firebase-perf").get().get().pluginId) - apply(libs.findPlugin("firebase-crashlytics").get().get().pluginId) - } + apply(plugin = libs.getPlugin("gms")) + apply(plugin = libs.getPlugin("firebase.perf")) + apply(plugin = libs.getPlugin("firebase.crashlytics")) + dependencies { val bom = libs.findLibrary("firebase-bom").get() diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationJacocoConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationJacocoConventionPlugin.kt index fec4ca183..7f0468f22 100644 --- a/build-logic/convention/src/main/kotlin/AndroidApplicationJacocoConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidApplicationJacocoConventionPlugin.kt @@ -17,15 +17,17 @@ import com.android.build.api.variant.ApplicationAndroidComponentsExtension import com.android.build.gradle.internal.dsl.BaseAppModuleExtension import com.google.samples.apps.nowinandroid.configureJacoco +import com.google.samples.apps.nowinandroid.getPlugin import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.getByType class AndroidApplicationJacocoConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { - pluginManager.apply(libs.findPlugin("jacoco").get().get().pluginId) + apply(plugin = libs.getPlugin("jacoco")) val androidExtension = extensions.getByType() androidExtension.buildTypes.configureEach { diff --git a/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt index 9110e7fa3..bebb0e6cd 100644 --- a/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt @@ -16,19 +16,20 @@ import com.android.build.gradle.LibraryExtension import com.google.samples.apps.nowinandroid.configureGradleManagedDevices +import com.google.samples.apps.nowinandroid.getPlugin import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies class AndroidFeatureConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { - pluginManager.apply { - apply("nowinandroid.android.library") - apply("nowinandroid.hilt") - } + apply(plugin = libs.getPlugin("nowinandroid.android.library")) + apply(plugin = libs.getPlugin("nowinandroid.hilt")) + extensions.configure { testOptions.animationsDisabled = true configureGradleManagedDevices(this) @@ -43,7 +44,10 @@ class AndroidFeatureConventionPlugin : Plugin { add("implementation", libs.findLibrary("androidx.lifecycle.viewModelCompose").get()) add("implementation", libs.findLibrary("androidx.tracing.ktx").get()) - add("androidTestImplementation", libs.findLibrary("androidx.lifecycle.runtimeTesting").get()) + add( + "androidTestImplementation", + libs.findLibrary("androidx.lifecycle.runtimeTesting").get(), + ) } } } diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryComposeConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryComposeConventionPlugin.kt index 0339d0c9d..118672a57 100644 --- a/build-logic/convention/src/main/kotlin/AndroidLibraryComposeConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidLibraryComposeConventionPlugin.kt @@ -16,6 +16,7 @@ import com.android.build.gradle.LibraryExtension import com.google.samples.apps.nowinandroid.configureAndroidCompose +import com.google.samples.apps.nowinandroid.getPlugin import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project @@ -25,8 +26,8 @@ import org.gradle.kotlin.dsl.getByType class AndroidLibraryComposeConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { - apply(plugin = libs.findPlugin("android-library").get().get().pluginId) - apply(plugin = libs.findPlugin("compose").get().get().pluginId) + apply(plugin = libs.getPlugin("android.library")) + apply(plugin = libs.getPlugin("compose")) val extension = extensions.getByType() configureAndroidCompose(extension) diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt index 185d22c02..fbe96da55 100644 --- a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt @@ -21,9 +21,11 @@ import com.google.samples.apps.nowinandroid.configureGradleManagedDevices import com.google.samples.apps.nowinandroid.configureKotlinAndroid import com.google.samples.apps.nowinandroid.configurePrintApksTask import com.google.samples.apps.nowinandroid.disableUnnecessaryAndroidTests +import com.google.samples.apps.nowinandroid.getPlugin import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.kotlin @@ -31,11 +33,9 @@ import org.gradle.kotlin.dsl.kotlin class AndroidLibraryConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { - with(pluginManager) { - apply(libs.findPlugin("android-library").get().get().pluginId) - apply(libs.findPlugin("kotlin-android").get().get().pluginId) - apply(libs.findPlugin("nowinandroid.android.lint").get().get().pluginId) - } + apply(plugin = libs.getPlugin("android.library")) + apply(plugin = libs.getPlugin("kotlin.android")) + apply(plugin = libs.getPlugin("nowinandroid.android.lint")) extensions.configure { configureKotlinAndroid(this) @@ -46,7 +46,9 @@ class AndroidLibraryConventionPlugin : Plugin { configureGradleManagedDevices(this) // The resource prefix is derived from the module name, // so resources inside ":core:module1" must be prefixed with "core_module1_" - resourcePrefix = path.split("""\W""".toRegex()).drop(1).distinct().joinToString(separator = "_").lowercase() + "_" + resourcePrefix = + path.split("""\W""".toRegex()).drop(1).distinct().joinToString(separator = "_") + .lowercase() + "_" } extensions.configure { configurePrintApksTask(this) diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryJacocoConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryJacocoConventionPlugin.kt index 75a5fbf61..3fecebadb 100644 --- a/build-logic/convention/src/main/kotlin/AndroidLibraryJacocoConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidLibraryJacocoConventionPlugin.kt @@ -17,15 +17,17 @@ import com.android.build.api.dsl.LibraryExtension import com.android.build.api.variant.LibraryAndroidComponentsExtension import com.google.samples.apps.nowinandroid.configureJacoco +import com.google.samples.apps.nowinandroid.getPlugin import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.getByType class AndroidLibraryJacocoConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { - pluginManager.apply(libs.findPlugin("jacoco").get().get().pluginId) + apply(plugin = libs.getPlugin("jacoco")) val androidExtension = extensions.getByType() androidExtension.buildTypes.configureEach { diff --git a/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt index 660eb8867..5dece9797 100644 --- a/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt @@ -16,9 +16,11 @@ import androidx.room.gradle.RoomExtension import com.google.devtools.ksp.gradle.KspExtension +import com.google.samples.apps.nowinandroid.getPlugin import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies @@ -26,8 +28,8 @@ class AndroidRoomConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { - pluginManager.apply(libs.findPlugin("room").get().get().pluginId) - pluginManager.apply(libs.findPlugin("ksp").get().get().pluginId) + apply(plugin = libs.getPlugin("room")) + apply(plugin = libs.getPlugin("ksp")) extensions.configure { arg("room.generateKotlin", "true") diff --git a/build-logic/convention/src/main/kotlin/AndroidTestConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidTestConventionPlugin.kt index a5182e17c..893382dc1 100644 --- a/build-logic/convention/src/main/kotlin/AndroidTestConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidTestConventionPlugin.kt @@ -17,18 +17,18 @@ import com.android.build.gradle.TestExtension import com.google.samples.apps.nowinandroid.configureGradleManagedDevices import com.google.samples.apps.nowinandroid.configureKotlinAndroid +import com.google.samples.apps.nowinandroid.getPlugin import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.configure class AndroidTestConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { - with(pluginManager) { - apply(libs.findPlugin("android-test").get().get().pluginId) - apply(libs.findPlugin("kotlin-android").get().get().pluginId) - } + apply(plugin = libs.getPlugin("android.test")) + apply(plugin = libs.getPlugin("kotlin.android")) extensions.configure { configureKotlinAndroid(this) @@ -37,5 +37,4 @@ class AndroidTestConventionPlugin : Plugin { } } } - } diff --git a/build-logic/convention/src/main/kotlin/HiltConventionPlugin.kt b/build-logic/convention/src/main/kotlin/HiltConventionPlugin.kt index a8228e5af..099610139 100644 --- a/build-logic/convention/src/main/kotlin/HiltConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/HiltConventionPlugin.kt @@ -15,15 +15,17 @@ */ import com.android.build.gradle.api.AndroidBasePlugin +import com.google.samples.apps.nowinandroid.getPlugin import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.dependencies class HiltConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { - pluginManager.apply("com.google.devtools.ksp") + apply(plugin = libs.getPlugin("ksp")) dependencies { add("ksp", libs.findLibrary("hilt.compiler").get()) add("implementation", libs.findLibrary("hilt.core").get()) @@ -31,7 +33,7 @@ class HiltConventionPlugin : Plugin { /** Add support for Android modules, based on [AndroidBasePlugin] */ pluginManager.withPlugin("com.android.base") { - pluginManager.apply("dagger.hilt.android.plugin") + apply(plugin = libs.getPlugin("hilt.plugin")) dependencies { add("implementation", libs.findLibrary("hilt.android").get()) } diff --git a/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt index 8e304d25d..30d6c20b8 100644 --- a/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt @@ -15,17 +15,17 @@ */ import com.google.samples.apps.nowinandroid.configureKotlinJvm +import com.google.samples.apps.nowinandroid.getPlugin import com.google.samples.apps.nowinandroid.libs import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.kotlin.dsl.apply class JvmLibraryConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { - with(pluginManager) { - apply(libs.findPlugin("kotlin-jvm").get().get().pluginId) - apply(libs.findPlugin("nowinandroid.android.lint").get().get().pluginId) - } + apply(plugin = libs.getPlugin("kotlin.jvm")) + apply(plugin = libs.getPlugin("nowinandroid.android.lint")) configureKotlinJvm() } } From 82e5f74f80b28d8461d31ad874e835a8be572371 Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Sun, 11 Aug 2024 14:27:29 +0900 Subject: [PATCH 5/6] Add an error instruction for easy debugging. Change-Id: If49856693c5ce13a77421842b03642badc7c53c3 --- .../samples/apps/nowinandroid/VersionCatalogExtensions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/VersionCatalogExtensions.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/VersionCatalogExtensions.kt index 71c7adc8f..a5396cadb 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/VersionCatalogExtensions.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/VersionCatalogExtensions.kt @@ -23,4 +23,4 @@ import kotlin.jvm.optionals.getOrNull * Get a Plugin from version catalog using an alias. */ fun VersionCatalog.getPlugin(alias: String): String = - findPlugin(alias).getOrNull()?.get()?.pluginId ?: "" + findPlugin(alias).getOrNull()?.get()?.pluginId ?: "There is no [$alias] in the catalog" From 594e516970192854ceb15c0bfcc41818d28035dc Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Sun, 11 Aug 2024 14:35:38 +0900 Subject: [PATCH 6/6] Add an internal visibility modifier. Change-Id: Ibbb6190b256bcbab8f1602745a8c6615639ca91d --- .../samples/apps/nowinandroid/VersionCatalogExtensions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/VersionCatalogExtensions.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/VersionCatalogExtensions.kt index a5396cadb..8966e2a2c 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/VersionCatalogExtensions.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/VersionCatalogExtensions.kt @@ -22,5 +22,5 @@ import kotlin.jvm.optionals.getOrNull /** * Get a Plugin from version catalog using an alias. */ -fun VersionCatalog.getPlugin(alias: String): String = +internal fun VersionCatalog.getPlugin(alias: String): String = findPlugin(alias).getOrNull()?.get()?.pluginId ?: "There is no [$alias] in the catalog"