Мы начали использовать MapStruct в нашем проекте и настроили обработчик аннотаций в соответствии с руководствами пользователя/настройки. Однако «сгенерированная» папка остается пустой и не содержит сгенерированные классы *MapperImpl.
В отличие от многих подобных вопросов, мы интегрируем простой Jar непосредственно в Eclipse без какой-либо поддержки сборки. такой инструмент, как Maven или Gradle (отсюда и проблема. Мы используем ANT для генерации наших окончательных артефактов, но для проблемы интеграции его в Eclipse это не должно иметь значения).
настройка:
- Eclipse 2021-06 (4.20.0)
- Java 1.8.0_202 (именно с ней я пробовал на самом деле можно было бы использовать и 1.8.0_341, но у меня его сейчас нет под рукой)
- MapStruct: 1.5.3 - mapstruct-processor-1.5.3.Final.jar
- Плагин MapStruct Eclipse не установлен

[img]https://i .sstatic.net/7Vp5z.png[/img]
Разница в инструкциях заключается в том, что имена папок «сгенерированы» вместо «.apt_generated» — я думаю, это не должно быть причиной .
Еще один интересный факт:
После открытия классов/интерфейсов MapStruct-Mapper и запуска изменения в них Eclipse успешно распознает это изменение и может обрабатывать аннотации, так что создаются соответствующие классы *MapperImpl. (только для измененных файлов, не для всех!). Для этого достаточно просто добавить и немедленно удалить пробел (чтобы фактически даже не произошло никаких изменений).
К сожалению, картографы, созданные с помощью этого подхода, удаляются при следующей «очистке». операция (
Код: Выделить всё
Project > Clean...На самом деле ожидается, что особенно после Операция Project > Clean... (которая запускает полное обновление и перестройку рабочей области) должна быть обработана все классы и сгенерирован *MapperImpl. Напротив, они просто удаляются, как описано выше.
В целом это похоже на ошибку в Eclipse или в «модуле процессора аннотаций», который не запускается во время процесса сборки (если только не были ли изменения в соответствующих исходных файлах) - или пусть это будет какая-то функция (например, некоторая расширенная индексация/кэширование, позволяющая лишь частично компилировать то, что абсолютно необходимо).
Я проверил ошибку Eclipse консоль и нет ничего заслуживает внимания MapStruct.
PS:
- На машине коллеги все работает нормально, и классы *MapperImpl генерируются в IntelliJ - так что сам код должен быть в порядке.
- Также попытка использовать более старую версию MapStruct-Processor Jar (1.4.2.Final) не помогла.
- MapStruct — единственный обработчик аннотаций, мы не используем lombok или что-то в этом роде.
- Я также установил плагин m2e-apt в качестве меры предосторожности, как упоминалось здесь, но также и это не помогло (поскольку, как и ожидалось, это, вероятно, необходимо только при использовании в сочетании с Maven/Gradle)
Подробнее здесь: https://stackoverflow.com/questions/746 ... lder-plain
Мобильная версия