IntelliJ не может найти сгенерированные источники при использовании в том же модуле
Я использую процессоры аннотаций Google AutoFactory. Я аннотировал SomeClass
с @AutoFactory
и ссылка 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
- Проверено, что источник действительно генерируется после перестройки (удалено
target
сначала папку, чтобы убедиться, что она сгенерирована IntelliJ) - Попробуй отключить
Exclude output paths
в структуре проекта, как предложено @tilpner - Недействительные кэши и перезапуск
- удалять
.idea
папка и.iml
файлы - Эксперимент с различными настройками для
Phase to be used for folders update
вPreferences
->Maven
->Importing
Проблема:
После выполнения всех этих шагов сгенерированный класс не отображается в проводнике проекта. На самом деле, весь 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.
1 ответ
Я получил помощь от поддержки Jetbrains, и проблема оказалась в предпочтении исключенных файлов. Есть два места, где они настроены:
Пожалуйста, убедитесь, что папки / файлы не исключены в
Preferences > Build, Execution, Deployment > Compiler > Excludes
и шаблон файла / папки не указан вPreferences > Editor > File Types -> Ignored files and folders
В моем случае target
был включен в список игнорируемых файлов и папок в Editor
> File Types
,
Затем была проблема компиляции, которую я решил, выбросив файлы проекта IDEA и снова создав проект.