【发布时间】:2018-05-08 08:28:34
【问题描述】:
我为一个 gradle 项目从 Eclipse 切换到 IntelliJ。 项目结构如下:
root
├── generated_src [main] (generated sources root)
├── generated_testSrc [tests] (generated test sources root)
├── out
│ └── production
│ ├── classes
│ └── resources
└── src
└── main
└── java (sources root)
IntelliJ 基于 gradle 配置创建了 3 个模块,如下所示:
my_project (containing everything, but nothing marked as Sources)
my_project_main (containing generated_src, marked as Sources)
my_project_test (containing generated_testSrc, marked as Tests)
Annotation 处理器用于在 generated_src 文件夹中生成类,生成的类如下所示:
generated_src [main] (generated sources root)
└── path.to.entities
└── MyEntity_.java
out
└── production
└── classes
└── path.to.entities
└── MyEntity.java
生成的类的所有用法都使用通配符语法导入。但似乎 IntelliJ 认为导入是指 out/production/classes 文件夹中的包,并且未导入生成的类。它让我可以选择导入它并生成:
import path.to.entities.*;
import path.to.entities.MyEntity_; <--WARNING: not used, remove?
导入生成的类后,显示为未使用,因为包已经使用通配符语法导入。如果我删除第二次导入,我会回到未导入 MyEntity_ 的原始状态。
我试过了:
- 不使用通配符语法导入所有内容。有效但违反团队代码风格
- 将 my_project_main 标记为模块 my_project 的依赖项,建议 here。问题依然存在
如何正确设置我的项目以正确导入生成的类?
【问题讨论】:
标签: intellij-idea