首页 > 解决方案 > Gradle 5.0:java.lang.String 无法转换为类 groovy.lang.Closure(lombok 问题)

问题描述

我在 Gradle 5.0 升级(从 4.10.2)期间遇到错误,并将代码隔离到以下块:

dependencyManagement {
    dependencies {
        compileOnly "org.projectlombok:lombok:1.18.2"
        testCompileOnly "org.projectlombok:lombok:1.18.2"
        annotationProcessor "org.projectlombok:lombok:1.18.2"
        testAnnotationProcessor "org.projectlombok:lombok:1.18.2"
        dependency "com.google.guava:guava:$guavaVersion"
        dependency "mysql:mysql-connector-java:$mysqlversion"
        dependency "com.google.inject:guice:${guiceVersion}"
        dependency "org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure:2.1.1.RELEASE"
    }
    imports {
        mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
        mavenBom "com.amazonaws:aws-java-sdk-bom:${awsVersion}"
    }
}

没有 lombok 行,代码可以正常工作。

dependencyManagement {
    dependencies {
        dependency "com.google.guava:guava:$guavaVersion"
        dependency "mysql:mysql-connector-java:$mysqlversion"
        dependency "com.google.inject:guice:${guiceVersion}"
        dependency "org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure:2.1.1.RELEASE"
    }
    imports {
        mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
        mavenBom "com.amazonaws:aws-java-sdk-bom:${awsVersion}"
    }
}

错误是class java.lang.String cannot be cast to class groovy.lang.Closure (java.lang.String is in module java.base of loader 'bootstrap'; groovy.lang.Closure is in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @675d3402)

由于 Gradle 5 注释处理的变化,我正在改变声明 lombok 的方式。

标签: gradle

解决方案


在下面的dependenciesdependencyManagement中不应该有任何具体的依赖声明,例如。compileOnlytestCompileOnly。仅dependency允许在其中定义所有具有正确版本的依赖项以供以后在子项目中使用。


推荐阅读