【发布时间】:2018-03-07 14:07:43
【问题描述】:
我一直在尝试为 IntelliJ 的注释处理找到正确的设置,以便它与 Gradle 的构建过程共存。
每当我从 IntelliJ 构建时,我都无法让它识别来自 gradle-apt-plugin 的生成源。
我对我的项目的要求是:
- IntelliJ 和 Gradle 之间的构建应该是无缝的,并且不会相互干扰
- 我需要使用 IntelliJ 的 为每个源集创建单独的模块 选项
- 我需要使用 IntelliJ 的基于文件夹的结构
- IntelliJ 需要能够识别和自动完成 AutoValue 类
为了重现 IntelliJ 2017.2.4 和 Gradle 3.5 的问题,以下是 MCVE 的步骤:
- 从 IntelliJ 创建一个新的 Gradle 项目
- 选中为每个源集创建单独的模块选项
- 打开 build.gradle 文件:
- 添加以下
plugins块:
plugins {
id 'java'
id 'net.ltgt.apt' version '0.12'
}
- 添加以下
dependencies块
dependencies {
compileOnly 'com.google.auto.value:auto-value:1.5'
apt 'com.google.auto.value:auto-value:1.5'
}
- 转到设置 → 构建、执行、部署 → 注释处理器
- 检查启用注释处理
- 创建一个类:
@AutoValue
public abstract class GeneratedSourcesTest {
static GeneratedSourcesTest create(String field) {
return new AutoValue_GeneratedSourcesTest(field);
}
public abstract String field();
}
- 在 IntelliJ 上运行 构建 → 构建项目
- 打开
GeneratedSourcesTest类,在静态工厂方法上,一切编译正常,但出现错误:
cannot resolve symbol ‘AutoValue_GeneratedSourcesTest’
如何使 AutoValue_GeneratedSourcesTest 类可以从 IntelliJ 访问?
【问题讨论】:
标签: java intellij-idea code-generation auto-value gradle-apt-plugin