作者:我的明天谁2502931447 | 来源:互联网 | 2023-01-16 17:23
我一直在尝试为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上运行Build→Build Project
打开GeneratedSourcesTest
类,在静态工厂方法,一切编译好,但我得到错误:
cannot resolve symbol ‘AutoValue_GeneratedSourcesTest’
如何AutoValue_GeneratedSourcesTest
从IntelliJ访问该类?
1> topr..:
在IDEA下导入Gradle项目后,请执行以下步骤:
设置注释处理配置如下:
运行菜单:构建 - 构建项目
右键单击每个新生成的文件夹,然后选择:将目录标记为 - 生成的源根,以便标记如下:
添加/generated
到项目的.gitignore文件
这是一个最小的可行配置,它将为生成的类提供完整的IDE支持.缺点是,每当重新导入Gradle项目时,生成的文件夹都需要再次标记为Generated Sources Root.也许这可以通过在build.gradle下添加这些路径作为源集来改进.
有时,由于上述结果,IDEA模块会丢失其编译器输出路径设置.只需将其设置回默认文件夹就足够了.