Add convention plugin for koin

pull/2064/head
lihenggui 1 year ago
parent a40fb8e1f5
commit 4839714ff0

@ -129,5 +129,9 @@ gradlePlugin {
id = "nowinandroid.cmp.feature"
implementationClass = "CmpFeatureConventionPlugin"
}
register("koin") {
id = "nowinandroid.di.koin"
implementationClass = "KoinConventionPlugin"
}
}
}

@ -0,0 +1,58 @@
/*
* 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.
*/
import com.google.samples.apps.nowinandroid.libs
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.dependencies
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
class KoinConventionPlugin: Plugin<Project> {
override fun apply(target: Project) {
with(target) {
with(pluginManager) {
apply("com.google.devtools.ksp")
}
extensions.configure(KotlinMultiplatformExtension::class.java) {
sourceSets.named("commonMain").configure {
kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin")
}
}
dependencies {
"commonMainImplementation"(platform(libs.findLibrary("koin.bom").get()))
"commonMainImplementation"(libs.findLibrary("koin.core").get())
"commonMainApi"(platform(libs.findLibrary("koin.annotation.bom").get()))
"commonMainApi"(libs.findLibrary("koin.annotation").get())
"commonTestImplementation"(libs.findLibrary("koin.test").get())
"kspCommonMainMetadata"(libs.findLibrary("koin.ksp.compiler").get())
"kspAndroid"(libs.findLibrary("koin.ksp.compiler").get())
"kspIosX64"(libs.findLibrary("koin.ksp.compiler").get())
"kspIosArm64"(libs.findLibrary("koin.ksp.compiler").get())
"kspIosSimulatorArm64"(libs.findLibrary("koin.ksp.compiler").get())
"kspJvm"(libs.findLibrary("koin.ksp.compiler").get())
}
project.tasks.withType(KotlinCompilationTask::class.java).configureEach {
if(name != "kspCommonMainKotlinMetadata") {
dependsOn("kspCommonMainKotlinMetadata")
}
}
}
}
}

@ -67,6 +67,7 @@ kotlinInject = '0.7.2'
multiplatform-settings = "1.2.0"
kermit = "2.0.4"
koin = "4.0.0"
koin-annotations = "1.4.0-RC4"
ktor = "3.0.0-rc-1"
ktrofit = "2.1.0"
buildKonfig = "0.15.2"
@ -143,6 +144,9 @@ hilt-core = { group = "com.google.dagger", name = "hilt-core", version.ref = "hi
hilt-ext-compiler = { group = "androidx.hilt", name = "hilt-compiler", version.ref = "hiltExt" }
hilt-ext-work = { group = "androidx.hilt", name = "hilt-work", version.ref = "hiltExt" }
javax-inject = { module = "javax.inject:javax.inject", version = "1" }
koin-annotations-bom = { group = "io.insert-koin", name = "koin-annotations-bom", version.ref = "koin-annotations" }
koin-annotations = { group = "io.insert-koin", name = "koin-annotations" }
koin-ksp-compiler = { group = "io.insert-koin", name = "koin-ksp-compiler" }
koin-bom = { group = "io.insert-koin", name = "koin-bom", version.ref = "koin" }
koin-android = { group = "io.insert-koin", name = "koin-android"}
koin-core = { group = "io.insert-koin", name = "koin-core"}
@ -272,3 +276,4 @@ nowinandroid-kmp-library = { id = "nowinandroid.kmp.library" }
nowinandroid-kotlin-inject = { id = "nowinandroid.kmp.inject" }
nowinandroid-sqldelight = { id = "nowinandroid.sqldelight" }
nowinandroid-cmp-feature = { id = "nowinandroid.cmp.feature" }
nowinandroid-di-koin = { id = "nowinandroid.di.koin" }

Loading…
Cancel
Save