我正在尝试开始使用 Kotlin Multiplatform,但遇到了障碍。生成的入门项目使用 ktor 作为后端库,但我更喜欢使用 Quarkus。我遇到的问题是试图使 quarkus 模块依赖于共享模块。这是简化的结构(我希望这是有意义的):
/
-/composeApp
--/androidMain
--/commonMain
--/desktopMain
-/shared
--/androidMain/kotlin
--/commonMain/kotlin
--/jvmMain/kotlin
-/quarkus
--/src/main/kotlin
如果我将
implementation(projects.shared)
添加到 quarkus/build.gradle.kts
,我会在构建时收到此错误:
> Cannot invoke "io.quarkus.bootstrap.workspace.ArtifactSources.getSourceDirs()"
because the return value of "io.quarkus.bootstrap.workspace.WorkspaceModule$Mutable.getSources(String)"
is null
我不是 Gradle 用户,但在我看来,我需要在 shared
下指定
whichsourceSet,但是,例如,
composeApp/build.gradle.kts
以相同的方式指定依赖项,所以我猜测 Quarkus插件是罪魁祸首。我只是不知道如何解决这个问题。有人吗? :P
要实现此目的,请在
jvm
目标的多平台共享模块中添加 withJava()
调用以确保包含源。 就是这样。
类似:
plugins {
alias(libs.plugins.kotlin.multiplatform)
}
kotlin {
js {
binaries.executable()
browser {
}
generateTypeScriptDefinitions()
}
jvm {
withJava() // ADD THIS!!!
}
}