Плагины в Grails - отличный способ модульного приложения. В документации предлагается переопределить артефакты из плагина в приложении, в котором используется этот плагин.Разработка плагинов Grails - переопределить класс домена
Действительно ли это лучший подход?
Опишем его на примере: В плагине указан класс домена «org.User». Приложение переопределяет этот класс домена. Если я использую «grails run-app», тогда нет предупреждений, и это работает. Но Eclipse (GGTS) жалуется на «Недопустимое определение класса дубликатов класса org.User». Для некоторых разработчиков это не имело бы значения, но мне нравится, что IDE помогает кодировать stuf как «автозаполнение».
В конце оба класса скомпилированы на загрузку класса java. Версия приложения класса загружается до версии плагина. Класс resolver находит его первым, и именно поэтому он работает. Пожалуйста, поправьте меня, если я ошибаюсь в этот момент. Действительно ли хорошая идея иметь две версии класса в одном загрузчике классов?
Каковы альтернативы?
Хотя не должно быть никаких проблем, поскольку плагины скомпилированы сначала, чем приложение, в чем же необходимость переопределить класс домена в приложении? Плагин не способен делать то, что вы ожидаете от него? – dmahapatro
В моем примере плагин обрабатывает все autorisation/authentification stuf. В приложении есть дополнительные поля в домене «Пользователь», которые не имеют отношения к безопасности. BTW: Расширяя Пользователь, используя наследование, есть некоторые проблемы в представлениях и контролерах. – Waldemar