MapStruct не генерирует реализации Mapper/пустую сгенерированную папку – Plain Eclipse + Java 8JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 MapStruct не генерирует реализации Mapper/пустую сгенерированную папку – Plain Eclipse + Java 8

Сообщение Anonymous »

Поскольку после долгих исследований я не смог найти ответа на свой вопрос ни в Stackoverflow, ни в обсуждениях MapStruct-Users Group/Github, я снова публикую его здесь.
Мы начали использовать 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 не установлен
Я выполнил инструкции из статей по настройке и включил обработку аннотаций и конкретный Jar в заводском пути, однако «сгенерированная» папка остается пустой:
Изображение

[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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»