如何在 gradle 的测试套件插件中添加 lombak(annotationProcessor 类型)依赖?

How to add lombak (annotationProcessor type) dependency in test suites plugin in gradle?

我使用 jvm-test-suite 插件创建了一个新的测试套件。

我添加了一些实现类型依赖项,它工作正常,没有出现错误。但我也想在那个测试套件中添加 lombak 依赖项,我用 implementation 关键字尝试了它,之后我检查了项目是否正在编译但在运行时那些注释(例如:SneakyThrows) lombak 被忽略了,我收到了错误。

之后,我尝试使用 annotationProcessor 关键字添加 lombak 依赖项,结果低于 gradle 同步时的给定错误。所以基本上看起来 annotationProcessor 关键字和 testAnnotationProcessor 没有被识别,因此这个错误来了。


Exception is:
org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'serverlessserver'.
    at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:93)

Caused by: groovy.lang.MissingMethodException: No signature of method: build_aiuizpn3ddvrwt4slowy7mi4q.testing() is applicable for argument types: (build_aiuizpn3ddvrwt4slowy7mi4q$_run_closure4) values: [build_aiuizpn3ddvrwt4slowy7mi4q$_run_closure4@74ada7e2]

Gradle 文件片段:-

testing {
    suites {
        test {
            useJUnitJupiter()
        }

        customTest(JvmTestSuite) {
            dependencies {
                implementation project
                ... // other dependencies
                annotationProcessor 'org.projectlombok:lombok:1.18.22' // adding this line is resulting in error message
            }            
        }
        ....
    }
}

直接来自 official lombok website

repositories {
    mavenCentral()
}

dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.22'
    annotationProcessor 'org.projectlombok:lombok:1.18.22'
    
    testCompileOnly 'org.projectlombok:lombok:1.18.22'
    testAnnotationProcessor 'org.projectlombok:lombok:1.18.22'
}

Lombok注解是在编译时应用的,所以应该在compileOnly阶段加入,而不是在runtimeOnly.

阶段加入

我在 gradle 开发团队的 Slack 支持频道上进行了沟通。我得到了这个问题的答案,它解决了我的问题,因此我将它发布在这里供其他人使用。

插件目前默认不在 testing/suites 块内提供直接注释处理器支持,团队正在实施它,可能会在未来的版本中支持它。

您仍然可以在 build.gradle 文件的最外层依赖块中提及此注释处理器以及测试套件名称。

示例 - build.gradle 示例文件

dependencies {
    .....
    // dependencies you already have in your project

    // add this line. "customTest" here is the name of test suite you defined.
    customTestAnnotationProcessor('org.projectlombok:lombok:1.18.22')
}

您还需要确保的一件事是,您已经在 build.gradle 文件中的此依赖项块之前定义了测试套件。否则,dependencies 中的 annotationProcessor 语句无法识别测试套件并会报错。