如何在 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 语句无法识别测试套件并会报错。
我使用 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 语句无法识别测试套件并会报错。