新建项目
准备工作做完了,开始创建项目,这里要说一下,Grails这种脚手架方式和一般传统的开发模式有点不同,因为它是遵循规约大于配置的方式,所以每个类、配置文件等所有文件都要求在固定的位置和相应的名称,所以它可以帮你预先创建好这些文件和类,这就是所谓的脚手架,就是帮你生成好默认模板代码。使用Grails开发的模式是生成->测试->修改/编码->完成,和传统模式有些区别,所以使用Grails来做项目可能需要有一个适应的阶段。
现在开始建立项目。进入powercmd,cd到你的项目目录(powercmd可以目录补全,tab键)。例如我的:e:/projects
在这里输入建立项目的命令:grails create-app leadtoasia
(leadtoasia项目名称,也是因为要做这个项目,才想吧整个项目开发过程记录下来汇总成一系列Grails开发的文章)
会看到一些信息,这些告诉你都生成了些什么,如果有兴趣可以看看。完成之后会在e:/projects/leadtoasia目录下生成了这个项目。
其目录结构如下:
grails-app : 项目源代码主目录
lib : 存放项目中用到的jar文件的,相当于/WEB-INF/lib
scripts : 可以编写自定义脚本,用于项目的编译生成等工作
src :除规约以内的其他源代码,可以是Groovy或java
target : Grails 1.20后吧编译过程中的class文件或测试报告文件放在这里
test : 单元测试和集成测试代码
web-app : web的静态文件
application.properties : 项目和插件的管理文件,一般不要改动
design : 这个不是Grails生成的,就是因为Grails没有生成存放设计文档的目录,一般我会自己建立一个这样的目录。
devDb.properties : 内存数据hsqldb配置文件
devDb.script : 内存数据库hsqldb数据文件
g.bat : 命令行简化工具,后面详细说。
看看grails-app目录中的内容,项目源代码主目录
conf : 项目配置信息
controllers : 控制器,mvc的控制层
domain : 域对象, mvc的model层
i18n : 国际化
services : 服务
taglib : 标签
utils : 工具类
views : gsp页面,mvc的view层
项目配置
conf目录下的代码和作用
BootStrap.groovy : 项目自定义启动和关闭事件
BuildConfig.groovy :构建配置,可以支持maven或ant
Config.groovy : 项目主配置文件,配置一些默认信息,log4j,不同环境下的变量,还有可以自定义配置
DataSource.groovy : 数据库配置,可以根据不同的环境配置不同的变量,有 development,test,production三种环境,为他们分别配置数据信息。
hibernate : hibernate的自定义配置,基本用不到
spring : spring的自定义配置,基本也用不到
UrlMappings.groovy : url映射和转发,看了你就明白
以上这么多,如果你是初次接触Grails暂时可能看不明白,这是正常,随着你深入了解Grails,这些都会对你非常重要,也会非常熟悉的,现在你只需要浏览一下,直到大概就可以。
项目建成后,通过上面的命令也了解了大概项目的结构,现在可以运行一下看看有什么东东,执行:
grails run-app
会有一些输出信息,但最后你会看到 Server running. Browse to http://localhost:8080/leadtoasia
这就说明项目启动成功了,拷贝powercmd窗口中这个地址 http://localhost:8080/leadtoasia (powercmd方便吧!哈哈)到浏览器里看看,可以看到项目的默认界面。
了解conf和Config.groovy和groovy和DataSource
浏览一下Config.groovy和DataSource.groovy文件,内容很直观,config是项目的一些统一配置,DataSource是数据库参数配置,因为Grails的ORM用的是Hibernate所以DataSource内可以直接使用Hibernate的配置参数和值。
这样不用写xml配置文件的Hibernate是不是已经让你很爽了,但我觉得config文件中最值得一说还不是这些,而是Grails的环境配置机制。Grails允许你为不同的环境配置参数,共有三种环境,production、development、test。
你以前可能遇见过这样的情况,项目打包部署到生产服务器时,需要把很多配置信息、数据库连接等等改成生产环境的配置。这是非常无聊而且容易出错的工作。有了这个机制就可以彻底解决这个问题和类似的问题。DataSource.groovy也是一样,可以为三种环境配置不同的数据库连接和类型,甚至不同的环境配置不同的Hibernate参数,缓冲,连接池、连接不同的数据库等等。而且后面参数覆盖前面的参数,也就是说你可以吧默认参数写在最外面,然后在后面可以通过覆盖调整。
而且你会在Config.groovy文件中看到以下面的代码,同一个变量定义了三次,而且都不一样。
environments {
production {
grails.serverURL = "http://www.changeme.com"
}
development {
grails.serverURL = "http://localhost:8080/${appName}"
}
test {
grails.serverURL = "http://localhost:8080/${appName}"
}
}
这些变量你在需要使用时只需要调用,grailsApplication.config.grails.serverURL,就会根据你当时的环境获得相应的变量。明白了吗?Grails提供三种运行环境。你在运行项目时可以通过参数确定环境。
grails run-app //默认的dev开发环境
grails war //默认prod 产品环境
grails test-app // 默认测试环境
grails prod run-app //强制产品环境
所以你就可以继续扩展很多变量在这个下面。比如这样:
environments {
production {
grails.serverURL = "http://www.changeme.com"
file.store = "d:\\files\\"
}
development {
grails.serverURL = "http://localhost:8080/${appName}"
file.store = "/data/uploads/"
}
test {
grails.serverURL = "http://localhost:8080/${appName}"
file.store = "d:\\test\\"
}
}
这样就可以解决你在win平台下开发,而部署应用到linux服务器中而不需要修改任何配置文件。爽吧
配置Log
// log4j configuratio
log4j = {
// Example of changing the log pattern for the default console
// appender:
//
appenders {
// console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
}
error 'org.codehaus.groovy.grails.web.servlet', // controllers
'org.codehaus.groovy.grails.web.pages', // GSP
'org.codehaus.groovy.grails.web.sitemesh', // layouts
'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
'org.codehaus.groovy.grails.web.mapping', // URL mapping
'org.codehaus.groovy.grails.commons', // core / classloading
'org.codehaus.groovy.grails.plugins', // plugins
'org.codehaus.groovy.grails.orm.hibernate', // hibernate integratio
'org.springframework',
'org.hibernate',
'net.sf.ehcache.hibernate'
warn 'org.mortbay.log'
}
这些就是Grails默认对log4j的配置,又见到这种Groovy独有的语法,非常简单易懂方便理解。这里有两个地方可能我们需要调整。
一个是:appenders,在appenders里可以添加自定义的日志内容格式。
比如: console name:'stdout', layout:pattern(conversionPattern: '[%d{yyyy/MM/dd HH:mm}] [%p] [%c{2} %L] - %m%n')
还有就是定义在我们项目中输出那些日志,非常简单。
info "grails.app.domain"
info "grails.app.controller"
info "grails.app.service"
info是日志级别,"grails.app.domain"是需要输出的类,方便吧!!!下面是所有可选的日志范围。
* bootstrap - For bootstrap classes
* dataSource - For data sources
* tagLib - For tag libraries
* service - For service classes
* controller - For controllers
* domain - For domain entities
结合前面讲到的环境变量机制和覆盖机制你的log4j配置信息应该是这样的。
默认的配置不动,添加下面这段在Config.groovy
environments {
production {
grails.serverURL = "http://www.changeme.com"
}
development {
grails.serverURL = "http://localhost:8080/${appName}"
log4j = {
appenders {
console name:'stdout', layout:pattern(conversionPattern: '[%d{yyyy/MM/dd HH:mm}] [%p] [%c{2} %L] - %m%n')
}
info "grails.app.domain"
info "grails.app.controller"
info "grails.app.service"
}
}
test {
grails.serverURL = "http://localhost:8080/${appName}"
}
}
- 大小: 7.7 KB
分享到:
相关推荐
NULL 博文链接:https://romejiang.iteye.com/blog/591632
Grails项目的应用越来越多,而对于初学者来说,在Eclipse下搭建Grails项目是一个难题,这个文档将教会你如何搭建Grails项目,希望对你有所帮助。
Grails企业web应用开发与部署.pdf 很好的资源
Grails_开发简介,本文介绍如何使用Oracle JDeveloper 作为IDE 来开发Grails 应用程序。此外,您还在学习开发Grails 应用程序的过程中大概了解Groovy 的一些概念。
grails开发实践,欢迎下载使用 grails开发实践,欢迎下载使用 grails开发实践,欢迎下载使用
这是一个在Eclipse下导入Grails项目,并对环境和报错进行相应调试的文档
详细讲解grails开发环境配置。 详细讲解grails连接mysql数据库,crud开发
grails开发关于grails入门指南的例子进行分析
grails1.0开发框架3 类似于ruby on rails的框架。
grails1.0开发框架1 类似于ruby on rails的框架。
关于grails企业web开发环境和部署的一些经验,和大家分享。
grails快速开发web.pdf
自己买的书,然后用扫描机扫描的,整个文件太大了,不能一次性上传上来,所以拆成3个part。 我自己学grails很想看这本书,结果网上没有,就自己去买了,然后共享给需要的人。 如果有什么问题请联系我下架。
自己买的书,然后用扫描机扫描的,整个文件太大了,不能一次性上传上来,所以拆成3个part。 我自己学grails很想看这本书,结果网上没有,就自己去买了,然后共享给需要的人。 如果有什么问题请联系我下架。
Apress.Beginning.Groovy.and.Grails.From.Novice.to.Professional.Jun.2008 grails_programming Grails1.1中文文档-----2009.3.25 Grails入门指南(第二版) Groovy经典入门 Programming Groovy 2 合集,超实惠哦
grails 用户登录的例子,必须登录后才可以查看信息,并且只有admin用户才可以创建用户,此例子,只要将grails 的环境配好,就可以用了,用的是自带的数据库,如果需要mysql 可以更改。
Grails Grails Grails Grails Grails
grails1.0开发框架4 类似于ruby on rails的框架。
使用 Grails 和 jQuery 快速开发一个 Web Calendar 程序。
本教程介绍 Grails,这是一个搭建在动态语言 Groovy 之上的开源 MVC 快速 Web 开发框架。使用 Grails 可以提高 Web 开发的...从 Grails 自动生成代码入手,以示例为中心逐步增加深度与难度,对 Grails 开发进 行演示。