Мне интересно, кто-нибудь знает подробности о том, как фреймворки, такие как Grails или Play, обнаруживают изменения в коде и автоматически запускают перекомпиляцию без перезагрузки сервера приложений? Есть ли что-то специфическое для компилятора Groovy или его динамическая природа, которая позволяет этому легко происходить?
Для фона у меня есть этап генерации кода во время процесса сборки, который я бы хотел иметь схожие возможности редактирования и обновления.
Заранее спасибо за любые указатели, даже если мне придется просеять код, чтобы получить более полную картину.
Редактировать: Я должен уточнить, что я не столько собираюсь создавать плагин Grails, сколько понять, что требуется для этого в любом приложении в контейнере сервлета. я использую Groovy, но не Grails.
Edit2: Звучит так, как будто в Play есть особый режим DEV, который включает горячую перезагрузку: http://www.playframework.org/documentation/1.1.1/main#lifecycle
Я понимаю, что JRebel выполняет сложные версии версий классов с помощью загрузчиков классов, но я предполагаю, что веб-фреймворки, такие как Grails или Play, не поднимают его до этого уровня.