やっぱ依存関係とかはmavenを使わないと面倒だ。依存ライブラリのソースの添付とかも簡単にできるし。そんなワケでなんとかmavenとeclipseを共存させられないか、と四苦八苦していたのだがよぅやくなんとかなったっぽい。といぅわけでarchetypeプラグインを作ってみた。
使い方
- まずはmaven的にプロジェクトを作成する
- artifactを作成するフォルダに移動して以下のコマンドを実行する。
- $ mvn archetype:create -DarchetypeGroupId=com.shin1ogawa -DarchetypeArtifactId=gae-jdo-quickstart -DarchetypeVersion=1.0-SNAPSHOT -DremoteRepositories=http://gae-j-samples.sourceforge.jp/maven/repository -DgroupId=com.yourdomain -DartifactId=yourArtifactId
- 強調斜体で表記した部分は適宜変更してください。必要であれば作成するartifactのversionやらpackageを追加で指定すればいいと思う。
- テストケースだけ実行してみる?
- 作成したartifactのフォルダに移動して以下のコマンドを実行する。
- $ mvn clean test
- mavenからのテストケースも実行できるはず。
- eclipse用に構成する
- 作成したartifactのフォルダに移動して以下のコマンドを実行する。
- $ mvn eclipse:eclipse dependency:copy-dependencies
- 依存モジュールをコピーしているのは、eclipseからGAE SDKでwebアプリとして起動する時に必要なjarを/war/WEB-INF/libにコピーする必要があるからです。
- eclipseに取り込もう
- eclipseを起動して、[Import][Existing Projects...]で作成したartifactのフォルダを選択するだけ。
- 注意!eclipseの設定で、"M2_REPO"がローカルリポジトリをさしている必要がありまっす。これはeclipseの設定画面を開いて、[Java][Build path][Classpath variables]で追加できます。[Name]に"M2_REPO"、[Path]に例えば"/Users/shin1/.m2/repository"みたいなかんじ。普段からmavenとeclipseを使っている人なら設定済みじゃないかと。
- Webアプリを実行する
- これはeclipseからしか実行できません。プロジェクト直下の"launches/gaej.web.launch"を右クリックして、"Run As"から実行してください。
- eclipseのコンソールに”The server is running at http://localhost:8080/”と表示されたら正常に起動できてます。ブラウザからhttp://localhost:8080/にリクエストしてみると、簡単なゲストブックが動作するはず。
- eclipseからテストケースを実行してみる
- プロジェクト直下の"launches/gaej.unittest.launch"を右クリックして、"Run As"から実行してください。
作成される雛形について
- プラグイン名を見てもわかるとおり、jdoを使う雛形が作成されます。
- Viewには素のjspを使ってます。
- memcacheを少し使ってます。
- mavenからunit testを実行できるので、CIするのも簡単です。
- eclipseからunit testを実行できるので、リズムよく開発できます。
何か問題があれば、TwitterなりFriendFeedなりで連絡をくださいー。
追記
以下が前提です!
- mavenがインストールされている。
- EclipseにGoogle App Engine SDK Pluginがインストールされていて、1.2.1にアップデート済みである。
mavenはいいとして、eclipse pluginについて初期の1.2.0を入れてしまっている人は以下の手順でUpdateする事ができます。
- [Help][Software Updates]メニューを開く
- [Google Update Site for Eclipse 3.4]にチェックを入れる。
- [Install]ボタンを押す。
- 終わるまで待つ。再起動を促されたら素直に再起動する。
- Eclipseの設定画面を開いて[Google][App Engine]を開くと、"1.2.0"と"1.2.1"があるので、"1.2.1"をチェックする(デフォルトにする)。
このあたりのGoogleAppEnginePluginのバージョンやらPluginを導入するタイミングによっては、以下のようなExceptionが出ます。
java.lang.NullPointerException at com.yourdomain.logic.AbstractLogic.newQuery(AbstractLogic.java:29) ... Caused by: org.datanucleus.exceptions.NucleusException: Plugin (Bundle) "org.datanucleus.store.appengine" is already registered. Ensure you dont have multiple JAR versions of the same plugin in the classpath. The URL "file:/Users/shin1/Documents/projects.gae/yourArtifactId/war/WEB-INF/lib/datanucleus-appengine-1.0.1.jar" is already registered, and you are trying to register an identical plugin located at URL "file:/Users/shin1/Documents/projects.gae/yourArtifactId/war/WEB-INF/lib/datanucleus-appengine-1.0.1.final.jar."
この場合はプロジェクトを作り直すか、war/WEB-INF/lib/datanucleus-appengine-1.0.1.final.jarを消してやってください(プロジェクトを作り直した方が無難)。
1 件のコメント:
動いた!
コメントを投稿