使用 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 导入我的项目),则 system-test 文件夹根本不会被视为源模块。


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


编辑:我现在使用 Groovy 创建了一个示例 Gradle 项目,并且使用以下代码可以正常工作(我猜这只是我上面语句的 groovy 版本):


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 方面的一个错误。


森林海
浏览 145回答 2
2回答

元芳怎么了

好像我把 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java