Расширение функциональности плагина Grails

Я хотел бы знать, возможно ли это и есть ли общий способ расширить функциональность плагина Grails.

Недавно я установил комментируемый плагин, но мне нужно внести в него некоторые изменения. Так как код хранится не вместе с проектом (а в каталоге пользователя), если я его модифицирую, то после обновления плагина (или установки проекта на другой машине) эти изменения теряются.

У кого-нибудь есть идеи?

Спасибо, Николас


person Nicolas    schedule 15.03.2011    source источник


Ответы (3)


Если вы хотите переопределить артефакт (например, класс домена), создайте его с тем же именем в своем проекте. Плагины компилируются отдельно от классов приложений, и их артефакты регистрируются первыми, поэтому, если в основном приложении есть артефакт, он заменит артефакты плагина. Просто убедитесь, что вы используете один и тот же пакет для классов предметной области, хотя это не требуется для контроллеров или служб.

person Burt Beckwith    schedule 15.03.2011

Если вы хотите полностью изменить плагин, вы можете попробовать изменить, а затем перекомпилировать плагин и собрать его в zip-файл с другим именем.

Затем вы можете установить настроенный плагин из исходного кода. Вы можете обратиться к вопросу здесь.

person Hoàng Long    schedule 16.03.2011

В одном проекте нам нужен был список разрешенных адресов электронной почты, на которые приложению было разрешено отправлять почту, для одной среды (QA), чтобы различные стороны, участвующие в проекте, могли тестировать приложение без риска отправки почты. наши клиенты клиенты (конечные клиенты).

Менять все кодовые блоки, выполняющие рассылку, было слишком сложно, поэтому я реализовал собственный расширитель для базового класса почтового плагина (grails.plugin.mail.MailMessageBuilder), который брал список разрешенных адресов электронной почты из конфигурации приложения и переопределил метод, который разрешал адреса перед отправкой почты (toDestinationAddresses). Затем я заменил фабричный метод (плагина), который создает MailMessageBuilders, чтобы он создавал мои пользовательские компоновщики, через метакласс Groovy в начальной загрузке Grails.

Это было чистое, ненавязчивое исправление, и оно работало хорошо.

person heikkim    schedule 07.09.2012