gradle - Gradle Kotlin DSL:配置任务: Unresolved reference

标签 gradle kotlin gradle-kotlin-dsl

我尝试过:

tasks.withType<com.github.spotbugs.SpotBugsTask> {
    reports.xml.enabled = false
    reports.html.enabled = true
}

我得到了这些编译错误:
Script compilation errors:

  Line 20:     reports.xml.enabled = false
                           ^ Unresolved reference: enabled

  Line 21:     reports.html.enabled = true
                            ^ Unresolved reference: enabled

我的脚本是:
plugins {
    id("com.github.spotbugs") version "1.6.9"
}

tasks.withType<com.github.spotbugs.SpotBugsTask> {
    reports.xml.enabled = false
    reports.html.enabled = true
}

repositories {
    jcenter()
}

我也尝试过
tasks.withType<com.github.spotbugs.SpotBugsTask> {
    reports { xml { enabled = false } }
    reports { html { enabled = true } }
}

然后我得到:
Script compilation errors:

  Line 30:         html {
                   ^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
                       public inline operator fun <T : Any, C : NamedDomainObjectContainer<TypeVariable(T)>> TypeVariable(C).invoke(configuration: NamedDomainObjectContainerScope<TypeVariable(T)>.() -> Unit): TypeVariable(C) defined in org.gradle.kotlin.dsl
                       public operator fun <T> Closure<TypeVariable(T)>.invoke(): TypeVariable(T) defined in org.gradle.kotlin.dsl
                       public operator fun <T> Closure<TypeVariable(T)>.invoke(x: Any?): TypeVariable(T) defined in org.gradle.kotlin.dsl
                       public operator fun <T> Closure<TypeVariable(T)>.invoke(vararg xs: Any?): TypeVariable(T) defined in org.gradle.kotlin.dsl
                       public operator fun <V> Callable<TypeVariable(V)>.invoke(): TypeVariable(V) defined in org.gradle.kotlin.dsl
                       public inline operator fun <reified T> Action<in TypeVariable(T)>.invoke(target: TypeVariable(T)): Unit defined in org.gradle.kotlin.dsl
                       public operator fun <T> NamedDomainObjectProvider<TypeVariable(T)>.invoke(action: TypeVariable(T).() -> Unit): Unit defined in org.gradle.kotlin.dsl
                       @Incubating public operator fun ArtifactHandler.invoke(configuration: ArtifactHandlerScope.() -> Unit): Unit defined in org.gradle.kotlin.dsl
                       @Incubating public operator fun DependencyConstraintHandler.invoke(configuration: DependencyConstraintHandlerScope.() -> Unit): Unit defined in org.gradle.kotlin.dsl
                       public inline operator fun <T> ExtraPropertiesExtension.invoke(initialValueProvider: () -> TypeVariable(T)): InitialValueExtraPropertyDelegateProvider<TypeVariable(T)> defined in org.gradle.kotlin.dsl
                       public operator fun <T> ExtraPropertiesExtension.invoke(initialValue: TypeVariable(T)): InitialValueExtraPropertyDelegateProvider<TypeVariable(T)> defined in org.gradle.kotlin.dsl
                       public operator fun <T> Spec<TypeVariable(T)>.invoke(arg: TypeVariable(T)): Boolean defined in org.gradle.kotlin.dsl
                       public inline operator fun TaskContainer.invoke(configuration: TaskContainerScope.() -> Unit): TaskContainer defined in org.gradle.kotlin.dsl

  Line 31:             enabled = true
                       ^ Val cannot be reassigned

  Line 31:             enabled = true
                                 ^ The boolean literal does not conform to the expected type NamedDomainObjectSet<SingleFileReport!>!

  Line 34:             destination = "$path/index.html"
                       ^ Unresolved reference: destination

  Line 36:         xml {
                   ^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
                       public inline operator fun <T : Any, C : NamedDomainObjectContainer<TypeVariable(T)>> TypeVariable(C).invoke(configuration: NamedDomainObjectContainerScope<TypeVariable(T)>.() -> Unit): TypeVariable(C) defined in org.gradle.kotlin.dsl
                       public operator fun <T> Closure<TypeVariable(T)>.invoke(): TypeVariable(T) defined in org.gradle.kotlin.dsl
                       public operator fun <T> Closure<TypeVariable(T)>.invoke(x: Any?): TypeVariable(T) defined in org.gradle.kotlin.dsl
                       public operator fun <T> Closure<TypeVariable(T)>.invoke(vararg xs: Any?): TypeVariable(T) defined in org.gradle.kotlin.dsl
                       public operator fun <V> Callable<TypeVariable(V)>.invoke(): TypeVariable(V) defined in org.gradle.kotlin.dsl
                       public inline operator fun <reified T> Action<in TypeVariable(T)>.invoke(target: TypeVariable(T)): Unit defined in org.gradle.kotlin.dsl
                       public operator fun <T> NamedDomainObjectProvider<TypeVariable(T)>.invoke(action: TypeVariable(T).() -> Unit): Unit defined in org.gradle.kotlin.dsl
                       @Incubating public operator fun ArtifactHandler.invoke(configuration: ArtifactHandlerScope.() -> Unit): Unit defined in org.gradle.kotlin.dsl
                       @Incubating public operator fun DependencyConstraintHandler.invoke(configuration: DependencyConstraintHandlerScope.() -> Unit): Unit defined in org.gradle.kotlin.dsl
                       public inline operator fun <T> ExtraPropertiesExtension.invoke(initialValueProvider: () -> TypeVariable(T)): InitialValueExtraPropertyDelegateProvider<TypeVariable(T)> defined in org.gradle.kotlin.dsl
                       public operator fun <T> ExtraPropertiesExtension.invoke(initialValue: TypeVariable(T)): InitialValueExtraPropertyDelegateProvider<TypeVariable(T)> defined in org.gradle.kotlin.dsl
                       public operator fun <T> Spec<TypeVariable(T)>.invoke(arg: TypeVariable(T)): Boolean defined in org.gradle.kotlin.dsl
                       public inline operator fun TaskContainer.invoke(configuration: TaskContainerScope.() -> Unit): TaskContainer defined in org.gradle.kotlin.dsl

  Line 37:             enabled = false
                                 ^ The boolean literal does not conform to the expected type NamedDomainObjectSet<SingleFileReport!>!

6 errors

最佳答案

每个报告的类型均为org.gradle.api.reporting.SingleFileReport,因此在Kotlin中,您想使用 bool(boolean) 参数调用setEnabled()方法,例如

tasks.withType<com.github.spotbugs.SpotBugsTask> {
    reports {
        xml.setEnabled(false)
        html.setEnabled(true)
    }
}

或者如果您想使用Kotlin的语法糖
reports {
    xml.isEnabled = false
    html.isEnabled = true
}

关于gradle - Gradle Kotlin DSL:配置任务: Unresolved reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54361465/

相关文章:

android - React Native Gradle构建失败: “node -e console.log(require(' react-native/cli')。bin);” :命令失败

spring - Kotlin 编译器返回 : Unresolved reference: springframework in Spring 5. 0

android - Android中布局参数动画的低性能

java - 如何将 JUnit 5 与 build.gradle.kts 和 kotlin 一起使用?

kotlin - 如何在 Gradle 6.1.1 中使用 Kotlin DSL 运行命令行命令?

java - Gradle 无法使用 Java 1.8 进行编译

java - 依赖动态生成的gradle项目

Kotlin 多类数据存储

android - 尝试将 Android Gradle 项目从 Groovy 迁移到 Kotlin 时出现 CacheOpenException

android - 在我的应用程序中,我有一个模块(一个库)。当我在库构建中设置 'productFlavors' 时。应用程序不能依赖该模块