无法在IntelliJ中使用通配符导入生成的类

时间:2018-05-08 08:28:34

标签: intellij-idea

我从Eclipse切换到IntelliJ以进行gradle项目。 项目结构如下所示:

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。问题仍然存在

如何正确设置项目以便正确导入生成的类?

1 个答案:

答案 0 :(得分:0)

我已通过更新注释处理器的以下设置来解决此问题

  • 生产来源目录:“ ../ generation_src
  • 测试源目录:“ ../ genic_testSrc