Я пытаюсь заставить процессор аннотаций Mapstruct работать в IntelliJ в проекте Gradle.
В идеале я ожидал бы, что вся конфигурация будет в файле gradle, и что любой может просто импортировать проектв IntelliJ и получите полную настройку без необходимости устанавливать какие-либо предпочтения вручную.
Но я согласен с компромиссами по этому вопросу.
Я использую IntelliJ 2018.3 и Gradle 5.0 с Java 11 (то естьпоследний и самый большой).Версия Mapstruct - 1.2.0.FINAL.
Что я сделал:
Настроил процессор аннотаций Mapstruct в моем build.gradle
:
compile "org.mapstruct:mapstruct-jdk8:${mapstruct_version}"
annotationProcessor "org.mapstruct:mapstruct-processor:${mapstruct_version}"
Выбранный «Делегировать IDE для сборки / запуска действий на Gradle» в Предпочтениях в разделе «Сборка, выполнение, развертывание -> Инструменты сборки -> Gradle -> Runner»
В каталоге build/classes/java/main/com/myapp/mypackage/mapper/
я вижу MyMapperImpl.class
и MyMapperImpl.java
, поэтому кажется, что генерация кода работает.
Теперь я ожидаю, что когда я выберу свой аннотированный абстрактный класс MyMapper
инажмите ctrl H , чтобы сгенерированный MyMapperImpl
появился в иерархическом представлении.
Если я вручную отмечу build/classes/java/main/
как каталог "сгенерированных источников" (которыйЯ действительно не хочу этого делать, см. Выше), класс по-прежнему не отображается в иерархии.Но исходный код помечен множеством ошибок, так как, по-видимому, классы из моего проекта не найдены.
Само собой разумеется: я могу безошибочно запускать тесты, использующие маппер, как из IntelliJ, так и из командной строки..