Java 带有Gradle Kotlin DSL和Intellij的自定义测试源集

Java 带有Gradle Kotlin DSL和Intellij的自定义测试源集,java,gradle,intellij-idea,gradle-kotlin-dsl,Java,Gradle,Intellij Idea,Gradle Kotlin Dsl,我的项目是使用Gradle和Kotlin DSL进行构建。现在我想添加一个用于测试的自定义源集。相关代码如下所示: java { sourceSets.create("systemTest") { java.srcDir("src/system-test/java") resources.srcDir("src/system-test/resources") } } 通过使用它,我得到Intellij中的另一个模块,它被视为源模块。我还尝试了以下

我的项目是使用Gradle和Kotlin DSL进行构建。现在我想添加一个用于测试的自定义源集。相关代码如下所示:

java {
    sourceSets.create("systemTest") {
        java.srcDir("src/system-test/java")
        resources.srcDir("src/system-test/resources")
    }
}
通过使用它,我得到Intellij中的另一个模块,它被视为源模块。我还尝试了以下方法将其标记为测试模块:

idea.module {
 testSourceDirs.addAll(project.sourceSets.getByName("systemTest").java.srcDirs)
testSourceDirs.addAll(project.sourceSets.getByName("systemTest").resources.srcDirs)
}
但是,如果我随后执行
/gradlew clean idea
并使用生成的文件打开项目(通常我从Gradle导入项目),则系统测试文件夹根本不会被视为源模块

有没有人有过使用Kotlin DSL声明自定义源集并将其标记为测试模块的经验

编辑: 现在,我使用Groovy创建了一个示例Gradle项目,在那里,使用以下代码(我猜这只是我上面语句的Groovy版本)可以毫无问题地工作:


因此,要么我对Kotlin DSL的转换是错误的,要么它是Intellij方面的一个bug。

看来我对Kotlin的转换是错误的,应该是错误的

idea.module {
    val testSources = testSourceDirs

    testSources.addAll(project.sourceSets.getByName("systemTest").java.srcDirs)
    testSources.addAll(project.sourceSets.getByName("systemTest").resources.srcDirs)

    testSourceDirs = testSources
}
使用此代码段,将更改
testSourceDirs
集,并将相关源集标记为测试模块

idea.module {
    val testSources = testSourceDirs

    testSources.addAll(project.sourceSets.getByName("systemTest").java.srcDirs)
    testSources.addAll(project.sourceSets.getByName("systemTest").resources.srcDirs)

    testSourceDirs = testSources
}