単純に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の表示が思った通りにならないので、これも課題だなぁ。