gradle - 使用 Kotlin DSL 进行集成测试的独立 Gradle 源集
问题描述
我正在开发一个用Kotlin实现的 Spring Boot 应用程序,并希望迁移 Gradle 构建以使用Gradle Kotlin DSL。
我无法弄清楚的一件事是如何为我的集成测试设置单独的源集和任务。
我的源代码树如下所示:
src
├── integrationTest
│ ├── kotlin
│ └── resources
├── main
│ ├── kotlin
│ └── resources
└── test
├── kotlin
└── resources
并且使用 Gradle 的 Groovy DSL 像这样设置源集和任务:
// build.gradle
sourceSets {
integrationTest {
kotlin {
compileClasspath += sourceSets.main.output + configurations.testRuntimeClasspath
runtimeClasspath += output + compileClasspath
}
}
}
configurations {
integrationTestCompile.extendsFrom testCompile
integrationTestRuntime.extendsFrom testRuntime
}
task integrationTest(type: Test, dependsOn: []) {
testClassesDirs = sourceSets.integrationTest.output.classesDirs
classpath = sourceSets.integrationTest.runtimeClasspath
}
我发现了许多使用 Gradle Kotlin DSL 和其他源集的示例 - 但没有任何组合。
任何人都可以帮忙吗?
解决方案
以下是将 Groovy 脚本转换为 Kotlin DSL 的方法:
java {
sourceSets {
val integrationTest by creating {
kotlin.apply {
compileClasspath += sourceSets["main"].output + configurations.testRuntimeClasspath
runtimeClasspath += output + compileClasspath
}
}
}
}
configurations["integrationTestCompile"].extendsFrom(configurations["testCompile"])
configurations["integrationTestRuntime"].extendsFrom(configurations["testRuntime"])
val integrationTest by tasks.creating(Test::class) {
val integrationTestSourceSet = java.sourceSets["integrationTest"]
testClassesDirs = integrationTestSourceSet.output.classesDirs
classpath = integrationTestSourceSet.runtimeClasspath
}
另请参阅:Gradle的将构建逻辑从 Groovy 迁移到 Kotlin指南
推荐阅读
- linux - boost::multiindex 和继承
- typescript - 如何限制打字稿中的枚举字符串值
- elasticsearch - 弹性搜索将过滤器应用于聚合数据
- javascript - 如何在 JavaScript 中实现点击事件?
- r - 从 R 中的函数或向量在数据框中创建多列
- reactjs - 如何比较和验证两个数据选择器的值与 ant design 中的表单项规则?
- linux-device-driver - 内核中的旋转触摸驱动程序
- pandas - 如何在 hy 中使用 pandas 的 apply 方法
- python - 覆盖 - PermissionError:[Errno 1] 不允许操作
- swift - Testflight 崩溃报告未出现在 xcode 中