Grails 入门
? 1 下载和安装让Grails运行起来的第一步是安装发行包。请按照如下步骤:
如果Grails正常工作了那么你可以在终端窗口中键入 ? Welcome to Grails 1.0 - http://grails.org/ Licensed under Apache Standard License 2.0 Grails home is set to: /Developer/grails-1.0 No script name specified. Use 'grails help' for more info ? 2从Grails 1.0.x升级尽管Grails开发团队试图将从Grails 1.0.x升级到Grails 1.1时带来的影响降到最低限度,但仍然有一些事项需要你认真考虑。重大变化描述如下。 ? Groovy 1.6Grails 1.1现在和Groovy 1.6协同工作并且不再支持针对Groovy 1.5的代码编译。如果你有一个使用Groovy 1.5编写的组件库,在将它用于Grails 1.1之前,你需要针对Groovy 1.6来重新编译它。 ? Java 5.0Grails 1.1现在不再支持JDK 1.4,如果你希望正常使用Grails,那么建议你继续使用Grails 1.0.x系列直到你能够升级你的JDK。 ? 配置的变化1) 为了系统的一致性,设置项 2) 下列设置已经从
3) 自从Java 5.0成为基线起, 4) jsessionid的使用(现在被认为是有害的)默认是禁用的。如果你的应用程序需要用到jsessionid,你可以重新启用它,在 ? grails.views.enable.jsessionid=true
5) 用来配置Log4j的语法已经改变了。看看用户指南的 登录 一章可以获得更多信息。 ? 插件的变化Grails 1.1默认将不在你的 ? grails.project.plugins.dir="./plugins"
? 脚本的变化1) 如果你先前使用的是Grails 1.0.3或以下的版本,那么下边用于从GRAILS_HOME导入脚本的语法将不再被支持: ? Ant.property(environment:"env") grailsHome = Ant.antProject.properties."env.GRAILS_HOME" 取而代之的是 ? includeTargets << grailsScript( "Bootstrap.groovy" )
2) 由于升级到了Gant,所有对变量 3) 项目的根目录不再存于classpath中,像如下的资源加载方式将无法使用: ? def stream = getClass().classLoader.getResourceAsStream("grails-app/conf/my-config.xml")
但是你可以使用Java文件API以及 ? new File("${basedir}/grails-app/conf/my-config.xml").withInputStream { stream -> // read the file } ? 命令行的变化
? grails run-app -https ? 数据映射的变化1) 枚举类型现在可以使用它们的String值来映射,而不再是ordinal值。当然你也可以通过如下方式改变你的映射来还原为旧的习惯: ? static mapping = { someEnum enumType:"ordinal" } 2) 双向的一对一关联现在可以使用在所有者端的一个单列和一个外键引用来映射。你不需要做任何修改,除非你想删除在相反端包含了重复数据的那一列。 ? REST支持接收到的XML请求现在不能被自动解析了。要启用对REST请求的解析,你需要在URL映射中使用 ? "/book"(controller:"book",parseRequest:true) 其次,你也可以使用新的 ? "/book"(resource:"book") 3 创建一个应用程序 要创建一个Grails应用程序你首先需要熟悉 ? grails [命令名称] 假如你需要执行的命令是 create-app: ? grails create-app helloworld 这将创建一个新的目录,其中包含了helloworld这个项目。你现在可以在终端里导航到这个目录: ? cd helloworld ? 4 一个Hello World例子要实现经典的"hello world!"例子你可以运行 create-controller 命令: ? grails create-controller hello 这将在 控制器能用来处理web请求并用来实现“hello world!”的例子,我们的实现代码如下: ? class HelloController {
def world = {
render "Hello World!"
}
}
完工。现在使用另一个称为run-app的新命令来启动容器: ? grails run-app 这将在8080端口开启一个服务器,现在可以通过 你将看到如下截图所示的内容: 这是由 ? 5 设置IDEIntelliJ IDEA目前用于Groovy和Grails开发的IDE中,最成熟、最全面的是IntelliJ IDEA 7.0和它的JetGroovy插件。在大型项目中,Grails团队优先推荐使用IDEA。 ? TextMate由于Grails关注的是简洁性,所以我们可以使用一些更简单的编辑器,例如在Mac环境下的TextMate,它对Groovy/Grails有着优秀的支持,可以从Texmate bundles SVN获得它。 ? Eclipse对于Eclipse,Groovy Eclipse 插件提供了语法高亮和代码自动完成等功能。 ? 在Grails的Wiki上有更多关于Groovy Eclipse插件的 详细讨论。 Grails为你自动创建了用于Eclipse的 接着顺序点击“Ok”和“Finish”即可完成项目的导入和安装。 Grails也将自动安装一个项目对应的“Run Configuration”配置,随后可以在Eclipse的“Run”菜单中来使用它运行Grails。 ? 6 约定优于配置Grails使用“约定优于配置”原则来配置自己。这通常意味着文件的名称和位置被用来替代明确的配置,因此你需要熟悉Grails提供的目录结构。 以下是大致目录结构并链接到相关的章节:
? 7 运行应用程序Grails应用程序可以使用 run-app 命令来运行在内置的Jetty服务器上,这个命令将默认在8080端口上启动一个服务器: ? grails run-app 当然你也可以使用 ? grails -Dserver.port=8090 run-app 更多关于 run-app 命令的信息可以在参考指南中找到。 8 测试应用程序 Grails 中的 ? grails test-app Grails也自动生成了用于Ant的 ? ant test 当你使用如CruiseControl这样的持续集成平台来自动构建Grails应用程序时,使用Ant的方式将非常有用。 9 部署应用程序Grails应用程序是通过Web应用程序档(WAR文件)的格式来部署的,它使用 war 命令来执行这个部署任务: ? grails war 这将在你的项目根目录中产生一个WAR文件,你可以参照你的容器指南来部署它。 ? 绝对不要使用 run-app 命令来作为部署的命令,因为它使Grails能够在运行期间自动重载,但这将带来许多性能和扩展性问题。 部署好Grails之后,你应该为你的容器JVM设置 ? -server -Xmx512M 10 创建工件Grails提供了许多像 create-controller 和 create-domain-class 这样方便的命令,可以使用它们来为你创建 控制器 等各种类型的工件。 这只是为了方便你进行开发,你也可以随意使用喜欢的IDE或文本编辑器来完成同样的工作。 例如,一个应用程序的基础部分是 域模型 ,我们可以像这样创建它: ? grails create-domain-class book 这将在 ? class Book { } 还有许多类似 10 支持的 Java EE 容器Grails支持相当广泛的容器,如下:
一些容器还有不少Bug,但在多数情况下它们都能工作的很好。在Grails的wiki站点你能找到一份 开发中已知问题列表 。 11 生成一个应用 要使用Grails快速开始,经常用到的一个特性叫做 脚手架 ,它可以用来生成一个应用的骨架。要开始这样做,你可以使用 ? grails generate-all Book (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |