使用 Kotlin DSL 进行集成测试的单独 Gradle 源集
Separate Gradle source set for integration tests using Kotlin DSL
我正在开发 Spring 在 Kotlin, and would like to migrate the Gradle build to use the 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 和其他源集的示例 - 但没有找到组合的示例。
有人能帮忙吗?
以下是将 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
}
另请参阅:Migrating build logic from Groovy to Kotlin 指南 Gradle
我正在开发 Spring 在 Kotlin, and would like to migrate the Gradle build to use the 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 和其他源集的示例 - 但没有找到组合的示例。
有人能帮忙吗?
以下是将 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
}
另请参阅:Migrating build logic from Groovy to Kotlin 指南 Gradle