Обзор структуры проекта Grails - PullRequest
11 голосов
/ 01 декабря 2010

Я пытаюсь найти общий обзор структуры проекта 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)

1 Ответ

9 голосов
/ 02 декабря 2010

За структурой каталогов по большей части следуют все приложения, поскольку артефакты определяются главным образом их корневой папкой.Имена классов контроллеров оканчиваются на «Controller», а у меток и сервисов есть похожие соглашения об именах, но у классов доменов нет никаких ограничений имен.Таким образом, именно местоположение в grails-app / domain определяет класс groovy как класс домена.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...