Liftプロジェクト環境を整える

Liftでの開発プロジェクトが本格始動するので、環境をまとめる。開発者1人だけど大きめのアプリケーションになるので、テスト・CI・トラッキングあたりはちゃんとしておきたい。

こういうのって大事だなー、と主にRubyistのアジャイルな方々から学びました。自分の仕事にも取り入れていきたいと思います。本当にありがとうございます。

■Lift Scala NetBeans

来るべきscala2.8時代にそなえて、lift1.1-M6でスタート。(安定版はlift1.0)>Lift Downloads

Mavenレポジトリにもあるので、以下で環境取得できます。

mvn archetype:generate -U -DarchetypeGroupId=net.liftweb
-DarchetypeArtifactId=lift-archetype-basic
-DarchetypeVersion=1.1-M6
-DremoteRepositories=http://scala-tools.org/repo-releases
-DgroupId=hello
-DartifactId=hello
-Dversion=1.0-SNAPSHOT

今のところLift1.1マイルストーンでもScala2.7が使われています。NetBeans6.7のscalaプラグインも2.7がターゲット。

lift1.1がscala2.8に移行するタイミングで、Scala Plugins for NetBeans 6.8 v1.x (beta)に移行する予定。


■Simple Build Tool

NetBeansはコードエディタとして使うくらいにして、ビルドはsbtを使うことにしました。simple-build-tool

Setup simple-build-tool
Liftプロジェクトの作り方
Hello Lift Example

project configurationは、liftのpom.xmlを見てバージョン等を書き直しておく。

import sbt._
class MyProject(info: ProjectInfo) extends DefaultWebProject(info){
val lift = "net.liftweb" % "lift-core" % "1.1-M6" % "compile"
val jetty6 = "org.mortbay.jetty" % "jetty" % "6.1.19" % "test"
val servlet = "javax.servlet" % "servlet-api" % "2.5" % "provided"
val derby = "org.apache.derby" % "derby" % "10.4.2.0" % "runtime"
val junit = "junit" % "junit" % "4.5" % "test"
val smackRepo = "m2-repository-smack" at "http://maven.reucon.com/public"
}

対話環境でビルドができたりして、かなり使いやすいです。

 C:\tmp> sbt.bat
 > reload
 > clean
 > compile
 > test
 > jetty-run
 > jetty-stop

スクリプトとして実行するには

 C:\tmp>sbt.bat clean compile test-compile test

今のLiftはMavenベースになっていますが、sbtはApache Ivy
がベースになっていて、依存jarはIvyでかき集めることになります。
Liftでも今後はsbtベースで環境を整えることになっているようです。


■specs

テストツールはspecsが慣れているので、これを使う。sbtでも対応している。http://code.google.com/p/specs/

ちまたではScalaTestが良いと評判です。


■git hudson redmine

リポジトリを定期ビルドして、結果をプロジェクトトラッカーにレポートしたい。

gitクライアントは、NetBeans Gitプラグインがまだ心もとないので、Cygwinを使う。


■継続ビルド(CI)にはhudsonを使う。

https://hudson.dev.java.net/
インストールは、Jettyにwarをデプロイしただけ。

スケジューラーで、git pullしてsbtを実行するようにしました。

「管理」-「プラグインの管理」-「インストール可能なプラグイン」にGitがあるので、ポチッとする。

「新規ジョブ作成」-「フリースタイル・プロジェクト」を選んで、
・「ソースコード管理システム」を"Git"
・「ビルド・トリガ」を"SCMをポーリング"
・「ビルド」を"シェルの実行"にして、スクリプトは上記"sbt clean~"


■プロジェクトトラッキングにはRedmineを使う。

http://redmine.jp/

Gitリポジトリブラウザはデフォルトでついてる。
Hudsonからの通知は、simple_ciで。
Redmine - Simple CI Plugin
CIツールの結果をフィードで貼り付けてくれるもののようです。


■Hudson-Redmineプラグイン

HudsonにRedmineプラグインがある。何をしてくれるものかまだ不明。インストールは、Gitプラグインと同じ。



・・・で、何が一番うれしいかと言えば、
inspiron mini v10 ubuntu editionを買いました(3万円くらい



Ubuntu Netbook Remixのせいなのか、サーバ類のaptの依存関係がなんかすぐ壊れてしまうので、こちらを参考に、ubuntu9.04に入れなおしました。
「普通のUbuntu」をネットブックで使う~Dell Inspiron Mini 10vの利用~

今までリポジトリサーバにはVMWare使ってたのですが、昨今のCIツールのようなものを動かしたりするとリソース食うので、リポジトリ専用機を用意したほうがいいと思い始めて、ネットブックをリポジトリサーバに使ってみることにしました。



↑ネットブックでHudson/Redmine、開発機でNetBeansが動いてる様子。

サーバとしてうるさくないし、起動停止、電源管理も楽。
これ、流行るんじゃないかな!



同じカテゴリのエントリ
1.Lift再入門 / 8.javascriptからsubmitできない / 7.Ajax Form / 6.Radio、Checkboxについて / 5.行列型の編集FORM / 4.サーバーサイドバリデーションとサーバサイド関数 / 3.ログインFORM - S.param使ったら負け / 2.Snippetメソッドとして許される型 / sbt0.12.xで依存jar抽出タスク / scala2.10+lift2.5+NetBeans7.2 / Scalaで入門関数プログラミング / reactive-webを試してみました / Lift2.2M1のテンプレート機能 / Scala Compiler Plugin / View Bound/Context Bound / ScalaZa01参加してきました / Akka Frameworkチュートリアルの次 / Akka Frameworkチュートリアルその2 / Akka Frameworkチュートリアル / LiftでJCaptcha / Url Rewrite Filter / sbt-android-plugin / Android SDK for Scala / 祝Lift2.0リリース / Liftの携帯対応まとめ / Scala2.8への移行 / Lift 2.0-scala280-SNAPSHOT/sbt0.7.1 / Scalaお絵かき環境 - Kojo / Lift+Quartzでバッチ / Scala&Liftを採用した理由 / Liftでdate_select系ヘルパーを作る / LiftでAjax / LiftのSubmitかしこい / lift-mapperのpaginateを使う / snippetをspecする / Lift Mapperを拡張する / LiftのDBをMySQLに / Liftプロジェクト環境を整える / Scala本読み比べてみました / NetBeans6.7&scala / じつはScalaはライトな言語 / Scalaバザ~ル / lift1.0所感 / specsを読む / implicit def / ScalaならNetBeansがサイコー / scala勉強会@東北がスタート / それでも俺はLiftをやるってのか / Scala&Liftセットアップ / ブログリニューアル /
コメント
toshiyuki ando
2009/11/05
こんにちは。
Redmine で Hudson プラグインを作成しています。
是非お試しください。

http://www.r-labs.org/wiki/r-labs/Hudson
武田ソフト
2009/11/05
教えていただきありがとうございます。
さっそくインストールさせていただきました!
これで運用してみたいと思います。

コメントしてください

closed.