如何在Compose Desktop项目中正确配置Dagger 2?
正确配置Dagger 2到Compose Multiplatform桌面项目的方法
错误原因
你在sourceSets的jvmMain依赖块中直接使用kapt()方法是错误的——Kotlin Multiplatform的sourceSet依赖块不支持kapt语法,这才导致了「类型不匹配(需要Action,却找到String)」的错误。kapt是针对JVM目标的注解处理器,必须配置在对应JVM目标的依赖块内。
正确的build.gradle.kts配置
import org.jetbrains.compose.desktop.application.dsl.TargetFormat plugins { kotlin("multiplatform") id("org.jetbrains.compose") kotlin("kapt") version "1.8.0" } group = "com.example" version = "1.0-SNAPSHOT" repositories { google() mavenCentral() maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") } kotlin { jvm { jvmToolchain(11) withJava() // 在这里配置kapt依赖 dependencies { kapt("com.google.dagger:dagger-compiler:2.45") } } sourceSets { val jvmMain by getting { dependencies { implementation(compose.desktop.currentOs) implementation("com.google.dagger:dagger:2.45") } } val jvmTest by getting } } // 保留原有的compose桌面配置部分 compose.desktop { application { mainClass = "com.example.MainKt" nativeDistributions { targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) packageName = "com.example" packageVersion = "1.0.0" } } }
额外注意事项
- 确保kapt插件版本和Kotlin版本匹配(示例中Kotlin版本为1.8.0,对应kapt版本一致是正确的)
- 如果需要在测试代码中使用Dagger,需在
jvm目标的testDependencies块中添加kaptTest("com.google.dagger:dagger-compiler:2.45")
内容的提问来源于stack exchange,提问作者mihalis
相关产品推荐
相关产品推荐

