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 でコンパイルが通ってもエディタにエラーが出ることはよくある。こっちは問題ないので気にしない。型を細かく書けば消えることもある。
ブラウザをリロードして、今修正した部分が反映していれば基本的な設定は完了。