2009年8月7日

Grails/GAE project in Eclipse

雖然對Grails支援最好的IDE應該是IntelliJ,可是用習慣Eclipse的我,還是選擇Eclipse。

要在Eclipse上跑Grails,前置作業可以參考我另一篇"Grails on Google App Engine傻瓜包",先建一個project。
然後在Eclipse上import project:
File -> import... -> General -> Existing Projects into Workspace

然後我有遇到兩個error,這邊是我的作法。

1. jdo:
會看到這樣的error
unable to resolve class Persistent , unable to find class for annotation
這是因為它會看不懂這些
@PersistenceCapable
@PrimaryKey

我是把project下的target/war/WEB-INF/lib/jdo2-api-2.3-ea.jar加到build path,來解決這問題。

2. spring
conf/spring目錄會看到紅色error,error敘述如下:
Invalid Package declaration in script: xxxx\grails-app\conf\spring\resources.groovy is not in a source folder matching the package declaration: train/grails-app/conf/spring resources.groovy line 0

這個只要把conf/spring加入source path就ok了,否則Eclipse會將他當作package。


2009年8月2日

Grails on Google App Engine傻瓜包

1. 準備工作2. 環境變數
export GRAILS_HOME="/home/lundi/Java/grails-1.1.1"
PATH="$PATH:$GRAILS_HOME/bin"
export JAVA_HOME="/usr/lib/jvm/java-6-sun"
export APPENGINE_HOME="/home/lundi/Java/appengine-java-sdk-1.2.2"

3. 建立google app
  • grails create-app lundi326
如果後面跟google App Engine的app不同,則要在grails-app/conf/Config.groovy修改
google.appengine.application="app-name"
  • 安裝Grails AppEngine plugin及Grails web application
cd lundi326
grails uninstall-plugin hibernate
grails install-plugin app-engine
grails create-domain-class lundi.Game
grails install-plugin hibernate
grails generate-all lundi.Game
grails uninstall-plugin hibernate
grails app-engine run


4. 上傳到google App Engine
grails set-version 1
grails app-engine package
$APPENGINE_HOME/bin/appcfg.sh update target/war


過程中,我浪費不少時間,因為之前我都用grails create-domain-class Game,都會失敗,後來改grails create-domain-class lundi.Game,才可以,好像一定要有package,或許是google App Engine規定的吧。

完成。 http://lundi326.appspot.com/

參考:
Grails on Google App Engine
Grails AppEngine plugin 裏面的介紹也很不錯