2010-12-01 115 views
11

我試圖儘可能充分地找到有關Grails項目結構的概述。正如我所看到的,並非所有項目都使用由「grails create-app」生成的默認結構。Grails項目結構概述

%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

如果您安裝了腳手架插件,則存在src/templates。 grails-app/jobs是Quartz作業(提供類似於cron的功能)。 – 2010-12-01 13:07:10

回答

9

所有應用程序都遵循目錄結構,因爲工件主要由其根文件夾定義。控制器類名稱以'Controller'結尾,標籤庫和服務具有相似的命名約定,但域類沒有任何名稱限制。所以它是grails-app/domain下的位置,它將groovy類定義爲一個域類。

但是,Grails允許應用程序和插件定義額外的工件類型,這就是您看到的「作業」文件夾。這是由Quartz插件創建的。我在動態控制器插件中做了類似的事情,我在其中保存了控制器mixin類的grails-app下添加了一個新的controllerMixins文件夾。

創建新工件而不是將代碼保存在src/groovy下的好處在於它支持在開發模式下重新加載很簡單,它將邏輯上的代碼分組而不是將所有內容都轉儲到一個文件夾中(src/groovy)並依靠包保持獨立。您還可以快速訪問任何類型的所有工件。 application.getDomainClasses()返回所有域類,但該方法是動態解析的,所以如果您安裝了Quartz,您將自動獲得對application.getJobClasses()的支持,而無需註冊或配置任何超出標準工件註冊的內容。