Я использую обработчики аннотаций 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.