5月14日Grails1.1.1发布,其中一个最振奋的特性就是可以支持Google App Engine开发了(通过插件的方式)。第一时间我试用了Grails这个最新版本,但因为在使用过程中还有些问题,今天才解决,所以现在把如何用Grails开发appengine项目为大家演示一下。
第一步:你必须有一个google账户,这样才能注册appengine账户
如果已经有google账户,到这里http://appengine.google.com申请appengine。
tip:在初次创建项目时需要手机验证,输入中国的手机号码前加 +86
第二步:下载Grails 1.1.1和下载Appengine的JavaSDK
http://grails.org/ Grails首页就有
Appengine的JavaSDK这个非常重要,也非常关键,而且关键的是你在AppEngine的官方下载页面是根本下载不到的。
必须到这里下载,http://code.google.com/p/googleappengine/ 那个Java版的SDK appengine-java-sdk-1.2.1.zip
第三步:新建一个Grails项目
grails create-app first-app
第四步: Grails项目名字和appengine名字的映射关系
你的Grails项目名字最好和你在appengine上的项目名字一致,否则你需要在项目中的Config.groovy文件里配置你在appengine部署的项目名字。
例如:google.appengine.application="petclinic-grails"
第五步: 卸载Hibernate插件
grails uninstall-plugin hibernate
因为Google App Engine不支持 GORM ,而且Appengine提供的数据库服务器需要jdo来访问。 所以要卸载hibernate,而使用jdo。
tip:这里卸载了HIbernate插件,但你在使用 generate-all命令生成gsp页面时可能会报错,因为Grails的gsp模板文件中使用了hibernate的一些class。
所以你需要吧hibernate插件中lib目录下的jar文件都拷贝到你在项目lib目录中。这是我的解决方案,管用,但不是官方的。*_-
报错信息如下:
groovy.lang.GroovyRuntimeException: Failed to parse template script (your template may contain an error or be trying to use expressions not currently supported): startup failed, Si
mpleTemplateScript1.groovy: 2: unable to resolve class org.codehaus.groovy.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor
@ line 2, column 16.
第六步: 安装AppEngine 插件
grails install-plugin app-engine
安装完成app-engine插件后你需要配置一下appengine sdk的环境变量。
set APPENGINE_HOME=D:\appengine-java-sdk-1.2.1
第七步: 运行项目
grails app-engine run
这里你可以做一些简单的应用...
第八步: 打包项目
生成一个版本号,这是appengine需要的
grails set-version 1
打包项目
grails app-engine package
将grails项目打包成appengine格式。这里需要验证你在google appengine上的账户和密码。
$APPENGINE_HOME/bin/appcfg.cmd update ./target/war
tip:这里使用appengine的appcfg.cmd 打包项目是可能会报下面的错误。
C:\dev\grails\grails-1.1.1\projects\first-app>%APPENGINE_HOME%\bin\appcfg update .\target\war
Email: **********
Reading application configuration data…
Bad configuration: XML error validating .\target\war\WEB-INF\datastore-indexes.xml against C:\dev\gae\appengine-java-sdk-1.2.1\docs\datastore-indexes.xsd
Caused by: cvc-elt.1: Cannot find the declaration of element 'datastore-indexes'.
解决方法是删除这个datastore-indexes.xml 文件,看这个文件的名字应该是数据库的索引标示不知道问什么会报错,只能等appengine插件更新后彻底解决这个问题了。
第九步: 将Grails项目部署到App Engine上
$APPENGINE_HOME/bin/appcfg.sh update ./target/war
grails app-engine deploy
虽然很简单,但还是有些问题,而且不能使用GORM确实还有得不太习惯,不知道在具体做一些应用时还有什么掣肘的问题??
最后打个广告,在Appengine上Grails终于领先rails一小步,我再次呼吁搞Java的如果想玩脚本语言极限开发快速开发TDD开发你最好的选择是Grails而不是rails。Google App Engine已经选择了Grails,你呢?
分享到:
相关推荐
Grails项目的应用越来越多,而对于初学者来说,在Eclipse下搭建Grails项目是一个难题,这个文档将教会你如何搭建Grails项目,希望对你有所帮助。
这是一个在Eclipse下导入Grails项目,并对环境和报错进行相应调试的文档
一步一步搭建grails应用的源代码,上传的图片全部丢失,只好上传代码。
grails演示项目,配置了一对多,多对对模型配置,配置了Mysql,Sqlserver数据库
Grails Grails Grails Grails Grails
grails 用户登录的例子,必须登录后才可以查看信息,并且只有admin用户才可以创建用户,此例子,只要将grails 的环境配好,就可以用了,用的是自带的数据库,如果需要mysql 可以更改。
使用Robotframework( )编写一个测试用例,以在Google上搜索“ Ruckus Wireless”,并检查是否找到任何结果。 导出RESTful API端点以运行测试用例。 使用Gradle&Docker将应用程序打包到容器中。 向我发送...
grails开发关于grails入门指南的例子进行分析
我们知道,在 Grails 项目中使用Grails类创建工具如“grails create-domain-class”等,能 帮我们创建domain、service ...Grails 项目集成到了Eclipse 里来,那么,在Eclipse开发平台上,我们又该如何创建这些对象呢?
grails jobs 定时任务 项目demo
实际上,一个grails插件和一个grails应用基本是完全一样的,同样可以使用grails run-app命令来运行。区别仅在于一个插件的根目录下需要提供一个fooplugin.groovy文件,提供插件的一些描述信息。
NULL 博文链接:https://romejiang.iteye.com/blog/591632
Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南
关于Grails开发的软件部署建议
引导程序演示 Grails 项目。
像Rails,Django和TurboGears这样的动态框架在Web开发领域开辟了一条新的道路,Grails基于这些概念之上,采用动态方法减小了Java平台上进行Web开发的复杂度,不过与那些框架不同的是,Grails是构建在Spring和...
grails-2.1.zip.001
Grails1.1中文文档
概括Grails插件将Primefaces集成到Grails项目中。 带有Java JDK 1.7的最低Grails版本是2.3.7,并且依赖项具有以下版本: 核心JSF 2.2 Primefaces 5.2 Apache MyFaces 2.2.8 可以在上找到源代码安装通过在BuildConfig...
grails+Xfire webservice