【发布时间】:2016-01-20 11:59:23
【问题描述】:
我正在使用Google's AutoFactory 的注释处理器。我用@AutoFactory 注释了SomeClass,并在同一个模块的其他地方引用了new SomeClassFactory().create()。
Maven 配置:
我在 Maven 中添加了必要的依赖:
<dependency>
<groupId>com.google.auto.factory</groupId>
<artifactId>auto-factory</artifactId>
<version>1.0-beta2</version>
<optional>true</optional>
</dependency>
在运行$ mvn clean compile 时,我看到target/generated-sources/annotions/somepackage/SomeClassFactory 已创建并且模块编译时没有错误。
IntelliJ 配置:
Reimport all maven modules-
Preferences->Annotation Processors->Enable annotation processing Rebuild Project
如果我的理解是正确的,这在我的 IDEA (v14.1.4) 版本中应该足够了。
我还执行了以下步骤:
- 已验证
generated-sources文件夹已添加为Project Structure中的源 - 已验证 Maven 首选项
Generated sources folders设置为Detect automatically - 验证源实际上是在 Rebuild 时生成的(首先删除
target文件夹以确保它是由 IntelliJ 生成的) - 按照@tilpner 的建议,尝试在项目结构中禁用
Exclude output paths - 使缓存失效并重新启动
- 删除
.idea文件夹和.iml文件 - 在
Preferences->Maven->Importing中尝试不同的设置Phase to be used for folders update
问题:
执行所有这些步骤后,生成的类不会显示在项目资源管理器中。事实上,整个target 目录无处可寻。编译失败,cannot find symbol: SomeClassFactory
而new SomeClassFactory().create()在编辑器中被标记为红色,而Maven生成和编译没有任何问题。
我自己没有选择,任何帮助或建议都非常受欢迎!
更新:当我注释导致编译错误的代码时,IntelliJ 在编译消息中打印此警告:Warning:Output path /Users/.../target/generated-sources/annotations intersects with a source root. Only files that were created by build will be cleaned.
【问题讨论】:
-
试试这个解决方案,它可能会解决您的问题。 click here for the solution
标签: java maven intellij-idea autofactory