简体   繁体   中英

IntelliJ can't find generated sources when used in same module

I'm using annotation processors of Google's AutoFactory . I annotated SomeClass with @AutoFactory and referenced new SomeClassFactory().create() somewhere else in that same module.

Maven configuration:

I added the necessary dependency in Maven:

    <dependency>
        <groupId>com.google.auto.factory</groupId>
        <artifactId>auto-factory</artifactId>
        <version>1.0-beta2</version>
        <optional>true</optional>
    </dependency>

When running $ mvn clean compile I see that target/generated-sources/annotions/somepackage/SomeClassFactory is created and the module compiles without errors.

IntelliJ configuration:

  • Reimport all maven modules
  • Preferences -> Annotation Processors -> Enable annotation processing
  • Rebuild Project

This should be enough in my version of IDEA ( v14.1.4 ) if my understanding is correct.

编译器首选项 项目结构

I also performed the following steps:

  • Verified that generated-sources folder is added as a source in Project Structure
  • Verified that Maven preference Generated sources folders is set to Detect automatically
  • Verified that source is actually generated upon Rebuild (deleted target folder first to be sure it's generated by IntelliJ)
  • Try to disable Exclude output paths in Project Structure, as suggested by @tilpner
  • Invalidate caches and restart
  • Delete .idea folder and .iml files
  • Experiment with different settings for Phase to be used for folders update in Preferences -> Maven -> Importing

Problem:

After performing all these steps, the generated class doesn't show up in the project explorer. In fact, the entire target directory is nowhere to be seen. Compilation fails with cannot find symbol: SomeClassFactory and new SomeClassFactory().create() is marked in red in the editor, while Maven generates and compiles without any problems.

I'm out of options myself and any help or suggestions would be very welcome!

Update: when I comment the code that causes the compilation error, IntelliJ prints this warning in the compilation messages: Warning:Output path /Users/.../target/generated-sources/annotations intersects with a source root. Only files that were created by build will be cleaned. Warning:Output path /Users/.../target/generated-sources/annotations intersects with a source root. Only files that were created by build will be cleaned.

I got help from Jetbrains support and the problem turned out to be a preference for excluded files. There are two places where these are configured:

Please check that folders/files are not excluded in Preferences > Build, Execution, Deployment > Compiler > Excludes and the file/folder pattern in not listed in Preferences > Editor > File Types -> Ignored files and folders

In my case target was included in the ignored files and folders list in Editor > File Types .

Then there was still a compilation issue, which I solved by throwing away the IDEA project files and creating the project again.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM