在 gradle 中声明对另一个...sourceSet 的依赖?

问题描述 投票:0回答:1

我正在尝试开始使用 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 下指定

which
sourceSet,但是,例如,
composeApp/build.gradle.kts
以相同的方式指定依赖项,所以我猜测 Quarkus插件是罪魁祸首。我只是不知道如何解决这个问题。有人吗? :P

gradle quarkus kotlin-multiplatform
1个回答
0
投票

要实现此目的,请在

jvm
目标的多平台共享模块中添加
withJava()
调用以确保包含源。 就是这样。

类似:

plugins {
    alias(libs.plugins.kotlin.multiplatform)
}

kotlin {
    js {
        binaries.executable()
        browser {
        }
        generateTypeScriptDefinitions()
    }

    jvm {
        withJava()  // ADD THIS!!!
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.