我正在开发在Kotlin中实现的Spring Boot应用程序,并且希望迁移Gradle构建以使用Gradle Kotlin DSL。
我不知道的一件事是如何为集成测试设置separate source set和任务。
我的源代码树如下:
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以及其他源集的示例-但是对于组合来说却一无是处。
有人可以帮忙吗?谢谢!
答案 0 :(得分:2)
以下是将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的Migrating build logic from Groovy to Kotlin指南