gpt4 book ai didi

java - 使用 Gradle Kotlin DSL 和 Intellij 的自定义测试源集

转载 作者:太空宇宙 更新时间:2023-11-04 09:50:32 24 4
gpt4 key购买 nike

我的项目使用 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 版本),它可以正常工作:

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

关于java - 使用 Gradle Kotlin DSL 和 Intellij 的自定义测试源集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54810182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com