2014-09-30 4 views
2

Есть ли способ заменить конфигурационные файлы Grails по умолчанию Config.groovy, BuildConfig.groovy, DataSource.groovy и т. Д., Которые генерируются/копируются при запуске grails create-app? У меня есть несколько приложений, которые используют одни и те же или очень похожие конфигурации, поэтому я в конечном итоге делаю много копирования и вставки при запуске нового.Override Default Grails create-app Files

Я изучил использование внешних файлов конфигурации, которые могут работать, но я также хотел бы заменить spring/resources.groovy, а также некоторые из представлений и файлов css/js/images, а также не смог бы сделайте это.

Я видел, где эти файлы находятся в $ GRAILS_HOME/src, но изменение этих параметров напрямую не влияет на создание-приложение (я предполагаю, что мне нужно будет перестроить граф, чтобы это повлияло).

Спасибо!

ответ

5

Существует способ, но он немного связан и полностью не документирован, так что это будет наш маленький секрет.

Скрипты create-app и create-plugin на самом деле довольно просты. Они создают новый пустой каталог и извлекают некоторые файлы jar из GRAILS_HOME/grails-resources-<version>.jar, которые содержат различные файлы проекта, и распаковывают их в каталог проекта. Затем запускается integrate-with --eclipse для создания файлов IDE для GGTS и для create-app выполняется сценарий wrapper для создания grailsw и т. Д., Если вы не используете флаг --skip-wrapper.

К концу разработки 2.3.0 Я добавил проверку скриптов для индивидуальной версии этих банок, и если один или несколько найденных, они используются вместо банок для акций. Чтобы использовать это, создайте папку в $HOME/.grails/<version> с именем app-templates. Так что для Grails 2.4.3 это будет $HOME/.grails/2.4.3/app-templates. Чтобы избежать случайного удаления этого каталога, я бы фактически создал символическую ссылку с этим именем, указывающую на отдельный каталог (например, ln -s /path/to/app-templates.2.4.3 ~/.grails/2.4.3/app-templates, но это необязательно. Вы также можете использовать символические ссылки для совместного использования одного набора переопределяющих банок для нескольких версий Grails.

Unzip $GRAILS_HOME/dist/grails-resources-2.4.3.jar и у вас будет 5 файлов jar: grails-app-files.jar (файлы приложения), grails-integration-files.jar (файлы для сценария integrate-with, например, файлы проекта Eclipse, файлы проекта IDEA и т. Д.), grails-plugin-files.jar (файлы с плагинами) и grails-shared-files.jar (файлы, используемые как приложениями, так и плагинами). Кроме того, у вас будет grails-wrapper-support.jar, но это не то, что вы обычно хотите настроить.

Распакуйте каждый из 4 файлов jar и сделайте все изменения, которые вы хотите. Некоторые изменения, которые я имею в виду, - это удалить много комментариев из файлов conf, переместить URLMappings.groovy из общего баннера в банку приложения, поскольку он редко необходим в плагинах, переместите DataSource.groovy из общей банки в оба приложения и плагины и вырезать большую часть той, которая будет использоваться в плагинах, и несколько других изменений. Вы можете удалять файлы, перемещать их между банками и добавлять новые файлы, если хотите.

+0

Это замечательно, спасибо! Просто чтобы уточнить, он не будет читать распакованные файлы, мне придется их переупаковать, так? Я предположил, что это так, но просто хотел быть уверенным. Теперь, чтобы перейти с Grails 2.2.1, я могу воспользоваться этим! :) Еще раз спасибо –

+0

Правильно, я забыл последний шаг, который должен повторно застегнуть распакованные каталоги и заменить старые файлы jar этими. Используйте любой инструмент zip, который вам нравится распаковывать и упаковывать банки, но не забудьте сохранить расширение .jar и сохранить ту же структуру каталогов при повторной упаковке. –

+0

Один последний комментарий, я заметил, что 'create-app' вытаскивал JAR из maven repo, и поскольку у нас есть локальное репетирование Artifactory, мы используем зависимости от прокси-сервера и храним локальные артефакты, я вносил изменения, как вы описали, и развернули локальную версию нашего репо. Запуск 'create-app' отлично работает для нас сейчас, и поскольку в Artifactory нам не нужно вручную заменять JAR. Отлично работает, спасибо! –

Смежные вопросы