grails - Grails 项目结构概述

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

最佳答案

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

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

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

关于grails - Grails 项目结构概述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4323033/

相关文章:

grails - “install-templates”在Grails 3中不可用

grails - 使用build.gradle文件将项目从2.4.3转换为3.0.X?

grails - 保存大型域对象树的提示

string - 在Groovy/Grails中使模型名称易于阅读

mysql - 子查询中的 GORM 标准分组依据

javascript - 在createLink中插入一个javascript变量

grails - 将Grails 3.1.4应用程序部署到Elastic Beanstalk时“Another unnamed CacheManager already exists in the same VM”-错误

grails - "public class Foo"对比Groovy 域类中的 "class Foo"

javascript - Grails - 在 GSP 中渲染变量值时避免转换

grails - 只在grails中做一个测试文件