![](/img/trans.png)
[英]Convert an existing groovy build.gradle file into a kotlin based build.gradle.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.