`
romejiang
  • 浏览: 95557 次
  • 性别: Icon_minigender_1
  • 来自: ...
社区版块
存档分类
最新评论

Google App Engine上运行Grails项目只需九步

阅读更多

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,你呢?

13
1
分享到:
评论
5 楼 copoplar 2009-09-24  
不好玩,玩不转!
4 楼 wupei 2009-05-21  
我玩了几天觉得上面最简便的还是python.
3 楼 chenlb 2009-05-20  
appspot.com 有时候被封,不敢在 gae 上做应用,拿来学习倒可以。

邦定域名,不能访问的机会更大,因为 ghs.google.com 经常被封。
2 楼 alang 2009-05-19  
收藏。期待你更多的GAE文章。
1 楼 rikugun 2009-05-19  
不错,回去弄一个插件玩玩,谢谢

相关推荐

Global site tag (gtag.js) - Google Analytics