4

Kotlinで実装された Spring Boot アプリケーションに取り組んでおり、Gradle ビルドを移行してGradle Kotlin DSLを使用したいと考えています。

理解できないことの 1 つは、統合テスト用に別のソース セットとタスクを設定する方法です。

ソースツリーは次のようになります。

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 の使用例や追加のソース セットの例を多数見つけましたが、組み合わせの例はありません。

誰でも助けることができますか?

4

1 に答える 1

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 によるビルド ロジックを Groovy から Kotlin に移行するガイド

于 2018-08-16T13:01:49.420 に答える