带有Gradle Kotlin DSL和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项目,在那里它使用以下代码而没有问题(我想这只是我上面的陈述的凹槽版本):

sourceSets {
  systemTest {
    java {
      compileClasspath += main.output + test.output
      runtimeClasspath += main.output + test.output
      srcDir file('src/system-test/java')
    }
    resources.srcDir file('src/system-test/resources')
  }
}
idea {
    module {
        testSourceDirs += project.sourceSets.systemTest.java.srcDirs
        testSourceDirs += project.sourceSets.systemTest.resources.srcDirs
    }
}

所以我要么将转换为Kotlin DSL错误,要么是Intellij端的错误。

似乎我的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集,并将相关源标记为测试模块。

另一种做同样的方法:

testSourceDirs = testSourceDirs.plus(sourceSets["integrationTest"].java.srcDirs)
testResourceDirs = testResourceDirs.plus(sourceSets["integrationTest"].resources.srcDirs)

相关内容

  • 没有找到相关文章

最新更新