具有 Java 9 个模块的 Kotlin - 在模块图中找不到 Main class

Kotlin with Java 9 Modules - Main class cannot be found in the module graph

我正在向我的 Springboot 项目添加黄瓜 'component test'。 我正在使用 @SpringBootTest,因此测试与应用程序共享相同的 JVM(主要 class 除外)。

我在 build.gradle.kts -

中为我的黄瓜测试设置了单独的源集
val SourceSet.kotlin: SourceDirectorySet
    get() = project.extensions.getByType<KotlinJvmProjectExtension>().sourceSets.getByName(name).kotlin

sourceSets {
    create("cucumber") {
        kotlin.srcDirs( "src/cucumber")
        compileClasspath += sourceSets["main"].output + configurations["testRuntimeClasspath"]
        runtimeClasspath += output + compileClasspath + sourceSets["test"].runtimeClasspath
    }
}

task<Test>("cucumber") {
    description = "Runs the cucumber tests"
    group = "verification"
    testClassesDirs = sourceSets["cucumber"].output.classesDirs
    classpath = sourceSets["cucumber"].runtimeClasspath
    useJUnitPlatform()
}

我的项目源集现在看起来像这样 -

我希望测试是黑盒的。 因此,我想阻止我的 'cucumber' 源代码集访问我的 'main' 源代码集中的任何代码。

我正在使用 Java 9 个模块来尝试实现这一点,这是我的 'cucumber' 模块-info.java -

open module at {
    requires com.johncooper.reactiveKotlin;
    requires ...
}

这是我的 'main' 模块-info.java -

module com.johncooper.reactiveKotlin {
  requires spring.boot.autoconfigure;
  requires ...
  exports com.johncooper.reactiveKotlin;
}

我在 运行 我的 'cucumber' 测试时遇到编译错误 -

Task :compileCucumberKotlin FAILED e: Module com.johncooper.reactiveKotlin cannot be found in the module graph

我尝试将模块-[​​=45=] 文件放入 java 根文件夹(建议放在另一个 post 中)但没有成功。

有没有人有任何见解?

解决办法是避开Java9个模块,使用Kotlin自带的原生模块功能! 这是 Kotlin 团队的文档 - https://kotlinlang.org/docs/visibility-modifiers.html#modules