単純にGAE/JでGroovyを動くようにするには、こちらのブログに書いてある通りにすれば良いのだが、GaelykはGAEの様々な機能を使い易くしてくれている。特に「low-level datastore API」と「task queue API」に反応してしまった。
※詳しくはGaelykのTutorialページを参照。また、チュートリアルを日本語訳してくださっている方も
またT2を使うのは、URLが/hoge/foo.groovyとかになってしまうのがカッコ悪いから(笑)ではなく、WebアプリのURLはできるだけアーキテクチャに依存されないようにすべきという考えに基づき、/hoge.拡張子やら?p=fooを排除したいのと、T2でURLマッピングしていた方が、後々何かあったときに柔軟に対応できそうな気がするから。
思いの他、前置きが長くなってしまったが、とりあえず、セットアップのメモ。
環境はこんな感じ。
- Mac OS X 10.5.8 (Leopard)
- Eclipse 3.5
- appengine-java-sdk-1.2.6
- Groovy 1.7-beta-2
- Gaelyk0.3.1
- T2 0.6.2-ga
- T2 extension modules 0.6.2-ga
- Google Guice 1.0
では、Eclipseでプロジェクトを作成し、それをカスタマイズしていきます。
1.GAEのプロジェクトを作成します。(GWTは使わないので外してます)

2.デフォルトで展開されるファイルはこんな感じ
3.下記から必要なファイルをダウンロードして必要なjarを集め、プロジェクトに追加していきます。
gaelyk-template-project-0.3.1.zip
http://gaelyk.appspot.com/download/
t2-0.6.2-ga.zip
t2-ext-0.6.2-ga.zip
http://code.google.com/p/t-2/downloads/list
guice-1.0.zip
http://code.google.com/p/google-guice/downloads/list
必要なjarはコレ

4.追加するとこんな感じ

※外して良いjarもあると思いますが、調べてないのでそのままいきます。
5.Javaコンパイラーを1.6に設定します

6.ビルドパスに「t2-0.6.2-ga.jar」を追加します

7.設定ファイルを編集します
・Gaelyk031_T2_Sample/build.groovy
new AntBuilder().sequential {
webinf = "war/WEB-INF"
gaeHome = System.getenv("APPENGINE_HOME")
if(!gaeHome) {
println "To build your file you have to set 'APPENGINE_HOME' env variable pointing to your GAE SDK."
System.exit(1)
}
taskdef name: "groovyc", classname: "org.codehaus.groovy.ant.Groovyc"
groovyc srcdir: "src", destdir: "${webinf}/classes", {
classpath {
fileset dir: "${webinf}/lib", {
include name: "*.jar"
}
fileset dir: "${gaeHome}/lib/", {
include name: "**/*.jar"
}
pathelement path: "${webinf}/classes"
}
javac source: "1.6", target: "1.6", debug: "on"
}
}
・war/WEB-INF/web.xml
Guice Servlet Filter com.google.inject.servlet.GuiceFilter t2 org.t2framework.t2.filter.T2Filter t2.rootpackage package com.keygraphix.gae.sample t2.container.adapter org.t2framework.t2.adapter.GuiceAdapter t2.eagerload true t2.exclude-resources css, js, png, gif, jsp, jar Guice Servlet Filter /* t2 /* GroovletServlet groovyx.gaelyk.GaelykServlet GroovyServlet groovy.servlet.GroovyServlet GroovyServlet *.groovy
7.src/com.keygraphix.gae.sample/IndexPage.javaを作成
package com.keygraphix.gae.sample;
import org.t2framework.t2.annotation.core.Default;
import org.t2framework.t2.annotation.core.Page;
import org.t2framework.t2.navigation.Forward;
@Page("/")
public class IndexPage {
@Default
public Forward index() {
return Forward.to("/index.groovy");
}
}
※ここがJavaなのは、Groovyでの動かし方が分からなかったから。でもGroovyで書いてもコード量減らないですよね。8.war/WEB-INF/groovy/index.groovyを作成
html.html {
head {
title "Hello"
}
body {
p "Hello Gealyk & T2 Sample"
}
}
9.サーバの起動

10.で確認ブラウザ
これで最低限動くようになりました。あとは、バリバリ開発していくだけ?ですね。
プラグインで一発環境構築とかできるようになりたいなぁ。
あと、SyntaxHighlighterの表示が思った通りにならないので、これも課題だなぁ。
