Hack for type-safe accessors in convention plugins

This commit is contained in:
FooIbar committed 2025-08-05 22:58:52 +08:00
1 parent 581125db62
commit 028a994070
6 files changed
+19 -16

No files matched your search

+3
View File
@@ -7,6 +7,9 @@ dependencies {
compileOnly(libs.android.gradlePlugin)
compileOnly(libs.kotlin.gradlePlugin)
compileOnly(libs.spotless.gradlePlugin)
// https://github.com/gradle/gradle/issues/15383#issuecomment-779893192
compileOnly(files(libs::class.java.superclass.protectionDomain.codeSource.location))
}
gradlePlugin {
@@ -16,10 +16,10 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidExtension
@Suppress("unused")
class AndroidApplicationConventionPlugin : Plugin<Project> {
override fun apply(target: Project) = with(target) {
apply(plugin = libs.findPlugin("kotlin-android").get().get().pluginId)
apply(plugin = libs.findPlugin("android-application").get().get().pluginId)
apply(plugin = libs.findPlugin("compose-compiler").get().get().pluginId)
apply(plugin = libs.findPlugin("composeCompilerReportGenerator").get().get().pluginId)
apply(plugin = libs.plugins.kotlin.android.get().pluginId)
apply(plugin = libs.plugins.android.application.get().pluginId)
apply(plugin = libs.plugins.compose.compiler.get().pluginId)
apply(plugin = libs.plugins.composeCompilerReportGenerator.get().pluginId)
configure<KotlinAndroidExtension> {
jvmToolchain(21)
@@ -10,9 +10,9 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
class MultiplatformLibraryComposeConventionPlugin : Plugin<Project> {
override fun apply(target: Project) = with(target) {
apply<MultiplatformLibraryConventionPlugin>()
apply(plugin = libs.findPlugin("compose-compiler").get().get().pluginId)
apply(plugin = libs.findPlugin("compose-multiplatform").get().get().pluginId)
apply(plugin = libs.findPlugin("composeCompilerReportGenerator").get().get().pluginId)
apply(plugin = libs.plugins.compose.compiler.get().pluginId)
apply(plugin = libs.plugins.compose.multiplatform.get().pluginId)
apply(plugin = libs.plugins.composeCompilerReportGenerator.get().pluginId)
configure<KotlinMultiplatformExtension> {
compilerOptions {
@@ -18,9 +18,9 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
@OptIn(ExperimentalKotlinGradlePluginApi::class)
class MultiplatformLibraryConventionPlugin : Plugin<Project> {
override fun apply(target: Project) = with(target) {
apply(plugin = libs.findPlugin("kotlin-multiplatform").get().get().pluginId)
apply(plugin = libs.findPlugin("android-kotlin-multiplatform-library").get().get().pluginId)
apply(plugin = libs.findPlugin("android-lint").get().get().pluginId)
apply(plugin = libs.plugins.kotlin.multiplatform.get().pluginId)
apply(plugin = libs.plugins.android.kotlin.multiplatform.library.get().pluginId)
apply(plugin = libs.plugins.android.lint.get().pluginId)
configure<KotlinMultiplatformExtension> {
jvmToolchain(21)
@@ -60,7 +60,7 @@ class MultiplatformLibraryConventionPlugin : Plugin<Project> {
configureSpotless()
dependencies {
"coreLibraryDesugaring"(libs.findLibrary("desugar").get())
"coreLibraryDesugaring"(libs.desugar)
}
}
}
@@ -1,8 +1,8 @@
package com.ehviewer
import org.gradle.accessors.dm.LibrariesForLibs
import org.gradle.api.Project
import org.gradle.api.artifacts.VersionCatalogsExtension
import org.gradle.kotlin.dsl.getByType
import org.gradle.kotlin.dsl.the
internal val Project.libs
get() = extensions.getByType<VersionCatalogsExtension>().named("libs")
get(): LibrariesForLibs = the()
@@ -6,10 +6,10 @@ import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.configure
internal fun Project.configureSpotless() {
apply(plugin = libs.findPlugin("spotless").get().get().pluginId)
apply(plugin = libs.plugins.spotless.get().pluginId)
configure<SpotlessExtension> {
val ktlintVersion = libs.findLibrary("ktlint").get().get().version
val ktlintVersion = libs.ktlint.get().version
kotlin {
// https://github.com/diffplug/spotless/issues/111
target("src/**/*.kt")