解决针对Micronaut和Gradle 5的警告“不建议在编译类路径上检测注释处理器”警告

时间:2018-08-06 05:43:47

标签: gradle groovy deprecation-warning micronaut

我正在尝试从Gradle解决以下警告。它仅在我调用测试代码时发生。主要的Java(仅)运行和构建任务运行正常。

测试代码在Groovy中。似乎Groovy与Gradle和Micronaut结合使用会在几周后解决了该消息但顽固地坚持与testtestCompile相关任务的项目上发出此消息。

> Task :plumbing:compileTestGroovy
The following annotation processors were detected on the compile classpath: 
'io.micronaut.annotation.processing.TypeElementVisitorProcessor' and     'io.micronaut.annotation.processing.PackageConfigurationInjectProcessor' and
'io.micronaut.annotation.processing.BeanDefinitionInjectProcessor'.
 Detecting annotation processors on the compile classpath is
 deprecated and Gradle 5.0 will ignore them. Please add them
 to the annotation processor path instead. If you did not 
intend to use annotation processors, you can use the 
'-proc:none' compiler argument to ignore them.

从Micronaut开始,我通过反复试验发现与Lombok一起使用的说明,到目前为止,运行Groovy测试的唯一方法是在build.gradle文件中使用以下配方。 Micronaut配方指定将Lombok放在Micronaut之前。这对于Java构建有效。

为了编译Groovy代码然后执行,我(貌似)需要这样写我的依赖项:

configurations {
    annotationProcessor
}

dependencies
{
    compileOnly (
        dep_lombok                  //  Must come first
    )

    annotationProcessor (
        dep_lombokAtnProc,          //  Must come first
        dep_micronautAtnProc
    )

    compileOnly (
        dep_micronaut              //  Must follow annotationProcessor 
    )

    implementation (
        project( ':base'),
    )

    testImplementation (
        project( ':TestingSupport')
    )

    testImplementation (
        dep_micronaut,
        dep_commonsConfig
    )
}
  • 依赖项dep_XXX只是字符串。
  • AtnProc...”标签专门用于标识注释处理器(即使它是相同的坐标)。

如果使用compileOnly ( dep micronaut )子句,则必须使用Groovy构建来处理诸如@Inject之类的事情。还有...

  • 它必须遵循annotationProcessor(..)子句中显示的顺序。

尽管目前Groovy文件中没有注释,但仍然存在注释。

有了以上构建信息,Groovy规范便可以正常运行和工作。但是,我仍然收到Deprecated ...警告。

没有compileOnly( Micronaut )短语,我会遇到编译错误,什么也没运行。 testCompileOnlygroovyCompileOnlytestAnnotationProcessor无效。

谁知道在使用Micronaut时如何使用Gradle构建和运行Groovy测试?测试与龙目岛罚款并存。

缺少的东西是@Inject@Singleton

期待建议和想法。

1 个答案:

答案 0 :(得分:0)

添加了annotationProcessor配置后,警告已针对您的主模块解决,但对于您的测试模块仍继续存在,这使我相信测试代码中正在使用注释处理器。

类似于kapt Kotlin annotation processor插件,我认为您需要使用testAnnocationProcessor为测试模块配置注释处理器,如下所示:

    testAnnotationProcessor (
        dep_lombokAtnProc,
        dep_micronautAtnProc
    )