Lombok 需要注解处理

Lombok Requires Annotation Processing

我正在使用 Android Studio 2.2 Preview 7,Lombok 插件突然开始提示: Annotation processing seems to be disabled for the project X,并为设置提供 link。

点击通知没有将我带到正确的地方。

解决这个问题的方法是什么?

点击通知打开的设置是Per Project设置,本例中不需要这些。

要解决此问题,请转至

  • File->Other Settings->Default Settings
  • 展开Build, Execution, Deployment
  • 展开Compiler
  • Annotation Processors中检查Enable annotation processing
  • 您可能需要重新打开项目才能使设置生效。
  • 享受

完整参考 - 具有适当设置屏幕的屏幕截图:

首先,我认为从欢迎屏幕中删除您的项目不会有任何影响。试想一下,从该屏幕上的 "recent projects" 中删除项目并不会重新创建它,更改默认设置对 现有项目有何影响?

要在现有项目中启用注释处理,您无需删除任何内容。转到 YourAwesomeProject/.idea/compiler.xml 并确保您在以下属性中具有值“true”:/project/annotationProcessing/profile@enabled.

像这样:

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CompilerConfiguration">
    ...
    <annotationProcessing>
      <profile default="true" name="Default" enabled="true"><!-- here -->
        <processorPath useClasspath="true" />
      </profile>
    </annotationProcessing>
  </component>
</project>

您可能需要文件 -> 使缓存无效/重新启动

对于那些使用 Android Studio 2.4+ 遇到同样问题的人,除了 Janis Peisenieks 的回答之外,通过上面的任何提示都无法解决问题。

打开您的 Intellij IDEA 2017 / Android Studio 2.4+ 并转到 (Windows)

  1. 文件->其他设置->默认设置
  2. 展开构建、执行、部署
  3. 展开编译器并选择注释处理器
  4. 确保您已启用注释处理和“从项目类路径获取处理器
  5. 最后但并非最不重要的是使用以下代码片段更新您的项目 build.gradle 文件。忽略它已被弃用的提示,因为它没有使用(直到现在。参见 issue)。

    defaultConfig {
        javaCompileOptions {
            annotationProcessorOptions {
                includeCompileClasspath = true
            }
        }
    }
    

发现有一种非常简单的方法可以做到这一点,无需进行上述所有更改!

如果您将处理器设置为 gradle,例如 lombok,您将不会仅使用 providedtestCompile。您需要使用 annotationProcessor 将其添加到您的依赖项中。示例:

dependencies {
    provided "org.projectlombok:lombok:1.16.16"
    annotationProcessor "org.projectlombok:lombok:1.16.16"
}

感谢 Jack Wharton 提供的 butterknife,我弄清楚了他是如何解决这个问题的。

提示:您可能需要使缓存无效并重新启动才能使其适用于某些注释处理器,如 lombok。

对于较新的 gradle 版本,将这些行输入到应用程序的 build.gradle 的依赖项块中就足够了:`

compile "org.projectlombok:lombok:1.16.16"
annotationProcessor "org.projectlombok:lombok:1.16.16"  

将项目与 gradle 同步,它将工作。

按照设置手册中的说明进行操作:

Gradle Make sure that the version of your android plugin is >= 0.4.3 Use the gradle-lombok plugin. If you don't want to use the plugin, add Lombok to your application's dependencies block (requires Gradle v2.12 or newer):

dependencies {    
 compileOnly "org.projectlombok:lombok:1.16.18" 
}

Android Studio Follow the previous instructions (Gradle). In addition to setting up your gradle project correctly, you need to add the Lombok IntelliJ plugin to add lombok support to Android Studio:

  1. Go to File > Settings > Plugins
  2. Click on Browse repositories...
  3. Search for Lombok Plugin
  4. Click on Install plugin Restart Android Studio

https://projectlombok.org/setup/android

当时可能标记的答案就足够了,但我在使用 android studio 3 和 lombok 1.16.18 时遇到了一些困难。无论如何,以下对我有用

app > build.gradle 添加以下内容

compileOnly 'org.projectlombok:lombok:1.16.18'
annotationProcessor 'org.projectlombok:lombok:1.16.18'

您可能会开始收到其他错误,因此如果您在 MyApplication > lombok.config 中添加以下行

lombok.addGeneratedAnnotation = false
lombok.anyConstructor.suppressConstructorProperties = true

如果你没有lombok.config刚刚添加它

以上内容由 lombok 的开发者在以下帖子中建议

lombok 网站的设置指南(lombok set up for android) 说我们应该做两件事

1, install the lombok plugin

2, add gradle dependencies

dependencies {
  compileOnly 'org.projectlombok:lombok:1.18.6'
  annotationProcessor 'org.projectlombok:lombok:1.18.6'
}

但对我来说,是插件导致了问题的发生。在我禁用插件后,错误消失了,lombok 仍然有效。

从 Android Studio v3.5(2019 年 8 月)及之前的版本开始,没有注释处理器的设置。 然而,在依赖项部分的 build.gradle 中定义就足够了:

dependencies {
...
    compileOnly 'org.projectlombok:lombok:1.18.8'
    annotationProcessor 'org.projectlombok:lombok:1.18.8'
...
}

如果 Android studio 仍然抱怨 "Lombok Requires Annotation Processing",对我来说是 Lombok 插件重新安装和 "Invalidate Caches / Restart" 解决了问题。

AndroidStudio 3.5+ 中执行后续步骤:

  • 转到File -> Other Settings -> Preferences for New Projects... (!)
  • 展开Build, Execution, Deployment
  • 展开Compiler
  • select Annotation Processors
  • 检查Enable annotation processing

如果还是不行,只需重新安装 Lombok 插件即可。

  1. 安装 Lombok 插件并重启
  2. 添加依赖项:https://projectlombok.org/setup/gradle

    只编译'org.projectlombok:lombok:1.18.12' 注释处理器 'org.projectlombok:lombok:1.18.12'

    仅测试编译'org.projectlombok:lombok:1.18.12' testAnnotationProcessor 'org.projectlombok:lombok:1.18.12'

这对我有用。