将 Groovy 个任务 build.gradle 转换为 kotlin kts 文件
Converting Groovy tasks build.gradle to kotlin kts file
我正在尝试将 Groovy 中的 build.gradle 文件转换为 kotlin .kts 文件,我在 gradle 文件中有一些我不知道如何正确转换的任务
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>(){
}
但它给我错误
Type 'DomainObjectCollection<Javadoc!>' has no method
'getValue(Build_gradle, KProperty<*>)' and thus it cannot serve as a
delegate
如何将这些 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)
}
我正在尝试将 Groovy 中的 build.gradle 文件转换为 kotlin .kts 文件,我在 gradle 文件中有一些我不知道如何正确转换的任务
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>(){
}
但它给我错误
Type 'DomainObjectCollection<Javadoc!>' has no method 'getValue(Build_gradle, KProperty<*>)' and thus it cannot serve as a delegate
如何将这些 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)
}