类型 'JavaCompile' 属性 'options.compilerArgumentProviders.apt$0.name' 缺少输入或输出注释。升级到 Gradle 7 后出错

Cla*_*idr 5 java spring gradle gradlew spring-boot

升级到 Gradle 7.0 并进行构建后,我遇到了以下失败:

> Task :compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Some problems were found with the configuration of task ':compileJava' (type 'JavaCompile').
  - Type 'JavaCompile' property 'options.compilerArgumentProviders.apt$0.name' is missing an input or output annotation.
    
    Reason: A property without annotation isn't considered during up-to-date checking.
    
    Possible solutions:
      1. Add an input or output annotation.
      2. Mark it as @Internal.
    
    Please refer to https://docs.gradle.org/7.0/userguide/validation_problems.html#missing_annotation for more details about this problem.
  - Type 'JavaCompile' property 'options.compilerArgumentProviders.apt$0.publicType' is missing an input or output annotation.
    
    Reason: A property without annotation isn't considered during up-to-date checking.
    
    Possible solutions:
      1. Add an input or output annotation.
      2. Mark it as @Internal.
    
    Please refer to https://docs.gradle.org/7.0/userguide/validation_problems.html#missing_annotation for more details about this problem.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
Run Code Online (Sandbox Code Playgroud)

我尝试过,--stacktrace但没有得到任何帮助。这里的事情是,我不知道去哪里寻找来解决这个问题,因为它没有提到build.gradle文件中的任何行或其他一些关于去哪里寻找的提示。

Tim*_*ich 14

只需删除所有 net.ltgt.apt 依赖项即可。您将不再需要它,因为它的功能现在可以在 Gradle 中本地使用。

更多详细信息:来自插件 README.md ( https://github.com/tbroyer/gradle-apt-plugin#readme )

The goal of this plugin was to eventually no longer be needed, being superseded by built-in features. This has become a reality with Gradle 5.2 and IntelliJ IDEA 2019.1. tl;dr: this plugin is obsolete, don't use it. If you're using Eclipse though, continue reading.

It originally did a few things to make it easier/safer to use Java annotation processors in a Gradle build. Those things are now available natively in Gradle, so what's this plugin about?

If you use older versions of Gradle (pre-4.6), you can still benefit from those features:

    it ensures the presence of configurations for your compile-time only dependencies (annotations, generally) and annotation processors, consistently across all supported Gradle versions;
    automatically configures the corresponding JavaCompile and GroovyCompile tasks to make use of these configurations, when the java or groovy plugin is applied.

With recent versions of Gradle (between 4.6 and 5.1), this plugin will actually only:

    add some DSL to configure annotation processors; it is however recommended to directly configure the tasks' options.compilerArgs;
    backport the sourceSet.output.generatedSourcesDirs Gradle 5.2 API;
    configure JavaCompile and GroovyCompile tasks' options.annotationProcessorGeneratedSourcesDirectory with a sane default value so you can see the generated sources in your IDE and for debugging, and avoid shipping them in your JARs.
Run Code Online (Sandbox Code Playgroud)


Kar*_*ilz 10

对于任何有同样问题的人:正如Bjørn所指出的,apt 插件是我的 Gradle 构建文件中的罪魁祸首。我删除了通用的 ( id "net.ltgt.apt") 和 IntelliJ 的 ( id "net.ltgt.apt-idea"),我的构建文件再次运行。