ログ日記

作業ログと日記とメモ

LiftでWebアプリ(1): プロジェクト環境の初期設定

エディタでコードを書き始められるようにするまで。


maven + sbt + JRebel と IntelliJ を使う。
IDEの初期設定は http://d.hatena.ne.jp/n314/20110810/1312942732 この辺。やってることはだいたい同じ。sbt、JRebelはダウンロード済みとしてまとめ直し。

mvn archetype:generate \
 -DarchetypeGroupId=net.liftweb \
 -DarchetypeArtifactId=lift-archetype-basic_2.8.1 \
 -DarchetypeVersion=2.2 \
 -DarchetypeRepository=http://scala-tools.org/repo-releases \
 -DremoteRepositories=http://scala-tools.org/repo-releases \
 -DgroupId=com.example \
 -DartifactId=cart \
 -Dpackage=com.example.cart \
 -Dversion=1.0

cd cart
sbt update

IntelliJ のプロジェクト新規作成で Import project from external model から Maven を選んで作成。Automatically download の sources と Documentation にチェックを入れる。
右下のステータスバー(?)の[ ]をクリックしてtype aware highlightingを有効にする。
プロジェクト設定のFacetsでJRebelを追加し、Automatically generate のチェックを外す。test/scala/RunWebAppを右クリックして Run with JRebelを実行。
ツールバーの実行ボタンの横にRunWebAppが出てくるので Edit Configurations をクリックし、 VM parametersに -Drebel.lift_plugin=true を設定する。
プロジェクトを右クリックしてGenerate rebel.xmlを実行。target/classes を target/scala_2.8.1/classes に変更する。
SBT Consoleを実行し、~compileを入力。


再度 Run with JRebel を実行し、ログの最初の行に -Drebel.lift_plugin=true が、JRebel: Directory に 先ほど設定した scala_2.8.1/classes が出力されていることを確認する。




ブラウザで localhost:8080 を開く。初期のメニューとWelcomeメッセージが出ている。
src/main/scala/com/example/cart/snippet/HelloWorld を開き

  def howdy = "#time *" #> date.map(_.toString)

となっているところを

  def howdy = "#time *" #> date.map(_.toString + "FOO BAR")

などに変更し、ファイルを保存すると SBT Consoleのコンパイルが走ることを確認する。ちなみにIntelliJはファイルを自動保存してくれるらしいが、コンパイルエラーをチェックしたいので明示的に保存するのが吉。エディタでエラーが出てなくても SBT Console でエラーになることがある。逆に SBT Console でコンパイルが通ってもエディタにエラーが出ることはよくある。こっちは問題ないので気にしない。型を細かく書けば消えることもある。
ブラウザをリロードして、今修正した部分が反映していれば基本的な設定は完了。