Grails项目结构概述

时间:2010-12-01 09:47:53

标签: 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)

1 个答案:

答案 0 :(得分:9)

大多数情况下,所有应用程序都遵循目录结构,因为工件主要由其根文件夹定义。控制器类名称以“Controller”结尾,而taglib和服务具有类似的命名约定,但域类没有任何名称限制。因此,它是grails-app / domain下的一个位置,它将groovy类定义为域类。

Grails允许应用程序和插件定义额外的工件类型,这就是您在“jobs”文件夹中看到的内容。这是由Quartz插件创建的。我在动态控制器插件中做了类似的事情,我在grails-app下添加了一个新的controllerMixins文件夹,其中保存了控制器mixin类。

创建新工件而不是将代码保存在src / groovy下的好处是,它很容易支持在开发模式下重新加载,并且它在逻辑上对代码进行分组,而不是将所有内容转储到一个文件夹(src / groovy)中并依赖于包把事情分开。您还可以快速访问任何类型的所有工件。 application.getDomainClasses()返回所有域类,但该方法是动态解析的,因此如果安装了Quartz,您将自动获得对application.getJobClasses()的支持,而无需注册或配置标准工件注册之外的任何内容。