Подтвердить что ты не робот

Обзор структуры проекта Grails

Я пытаюсь найти обзор структуры проекта Grails, насколько это возможно. Как я вижу, не все проекты использовали структуру по умолчанию, созданную "grails create-app"

%PROJECT_HOME%
    + grails-app
       + conf                 ---> location of configuration artifacts 
           + hibernate        ---> optional hibernate config
           + spring           ---> optional spring config
       + controllers          ---> location of controller artifacts
       + domain               ---> location of domain classes
       + i18n                 ---> location of message bundles for i18n
       + services             ---> location of services
       + taglib               ---> location of tag libraries
       + util                 ---> location of special utility classes 
       + views                ---> location of views
           + layouts          ---> location of layouts
   + lib
   + scripts                  ---> scripts
   + src
       + groovy               ---> optional; location for Groovy source files
                                   (of types other than those in grails-app/*)
       + java                 ---> optional; location for Java source files
   + test                     ---> generated test classes
   + web-app
       + WEB-INF

Есть ли еще больше папки по умолчанию от Grails? (Например, я видел grails-app/jobs)

4b9b3361

Ответ 1

Структура каталогов в основном используется всеми приложениями, потому что артефакты определяются в основном их корневой папкой. Названия классов контроллеров заканчиваются на "Контроллер", а теги и службы имеют аналогичные соглашения об именах, но классы домена не имеют ограничений по имени. Таким образом, это место под grails-app/domain, которое определяет класс groovy как класс домена.

Grails позволяет приложениям и плагинам определять дополнительные типы артефактов, а также то, что вы видите в папке "jobs". Это создано плагином Quartz. Я делаю что-то подобное в плагине динамических контроллеров, где я добавляю новую папку controllerMixins в grails-app, где хранятся классы контроллера mixin.

Преимущество создания нового артефакта, а не хранения кода под src/ groovy заключается в том, что он просто поддерживает перезагрузку в режиме разработки, и он группирует код логически, а не сбрасывает все в одну папку (src/groovy) и полагаться на пакеты, чтобы держать вещи раздельными. У вас также есть быстрый доступ ко всем артефактам любого типа. application.getDomainClasses() возвращает все классы домена, но метод динамически разрешен, поэтому, если у вас установлен Quartz, вы автоматически получаете поддержку application.getJobClasses() без необходимости регистрировать или настраивать что-либо помимо стандартной регистрации артефактов.