簡體   English   中英

將 Groovy 任務 build.gradle 轉換為 kotlin kts 文件

[英]Converting Groovy tasks build.gradle to kotlin kts file

I am trying to convert my build.gradle file in Groovy to a kotlin.kts file, I have some tasks in the gradle file that I dont know how to convert correctly

task androidJavadocs(type: Javadoc) {
    failOnError = false
    source = android.sourceSets.main.java.srcDirs
    ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
    classpath += files(ext.androidJar)
    exclude '**/R.html', '**/R.*.html', '**/index.html'
}

task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
    classifier = 'javadoc'
    from androidJavadocs.destinationDir
}

我不太明白如何使用“類型”,我正在走這條路

val androidJavadocs by tasks.withType<Javadoc>(){

}

但它給了我錯誤

類型 'DomainObjectCollection<Javadoc,>' 沒有方法 'getValue(Build_gradle, KProperty<*>)',因此它不能用作委托

如何正確地將那些 groovy 任務轉換為 kotlin 任務?

您可以使用named()方法來配置現有任務,並使用register()方法來創建新任務。

tasks {
    register<Javadoc>("androidJavadocs") {
        // Task's body here
    }
}

// or

tasks.register<Javadoc>("androidJavadocs") {
    // Task's body here
}

如果要使用 Kotlin 委托屬性

val androidJavadocs by tasks.registering(Javadoc::class) {
    // Task's body here
}

您問題的完整答案

val androidJavadocs by tasks.registering(Javadoc::class) {
    isFailOnError = false
    source = android.sourceSets.main.java.srcDirs
    ext["androidJar"] = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
    classpath += files(ext["androidJar"])
    exclude("**/R.html", "**/R.*.html", "**/index.html")
}

val androidJavadocsJar by tasks.registering(Jar::class) {
    classifier = "javadoc"
    dependsOn(androidJavadocs)
    from(androidJavadocs.get().destinationDir)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM