2011年7月9日土曜日

play-scalaの導入

play-scala プロジェクトを新規に作成して,eclipse で開発できるように環境を構築していたのですが,途中,エラーが出て少し悩んだところがあったのでまとめておきます.
※簡略できる手順などありましたら,教えていただけると助かります.

環境

※バージョン管理ツールに svn を使用しますが,svn の環境についてはすでに準備されているものとします.

手順

  1. play-scala プロジェクトの新規作成

    詳細な play のインストールについては,本家サイトを参照ください.
    ここでは,scala module を使用したプロジェクトの新規作成についてのみ記述します.新規作成を行うには play new コマンドに with オプションにて,scala を指定します.
    $ play new hoge --with scala
    
    次のように表示されればOKです.
    ~        _            _ 
    ~  _ __ | | __ _ _  _| |
    ~ | '_ \| |/ _' | || |_|
    ~ |  __/|_|\____|\__ (_)
    ~ |_|            |__/   
    ~
    ~ play! 1.2.2, http://www.playframework.org
    ~
    ~ The new application will be created in /some/workspace/hoge
    ~ What is the application name? [hoge] 
    ~
    ~ Resolving dependencies using /some/workspace/hoge/conf/dependencies.yml,
    ~
    ~       play->scala 0.9.1 (from playLocalModules)
    ~
    ~ Installing resolved dependencies,
    ~
    ~       modules/scala-0.9.1 -> /opt/play-1.2.2/modules/scala-0.9.1
    ~
    ~ Done!
    ~
    ~ OK, the application is created.
    ~ Start it with : play run hoge
    ~ Have fun!
    ~
    
    プロジェクトが作成できたので,svn リポジトリに登録しておきます.
    $ svn import ./hoge http://somewhere/svn/hoge/trunk/hoge -m "new project"
    
  2. play-scala プロジェクトを eclipse プロジェクトに変換する.

    play-scala プロジェクトを eclipse で扱えるようにするためには,コマンドで eclipse プロジェクト化する必要があります.
    まず eclipse に取り込む前に,一度チェックアウトしておきます.
    $ svn co http://somewhere/svn/hoge/trunk/hoge /some/hoge
    $ cd /some/hoge
    $ play eclipsify
    
    これで..classpath, .projectなどのファイルや eclipse からの起動に必要な launcher が納められた eclipse ディレクトリが作成されたものと思います.
  3. eclipse へ import

    あとは,取り込むだけといきたいのですが,ここでそのままパッケージ・エクスプローラにて,[右クリック]→[インポート]→[既存プロジェクトをワークスペースへ]から eclipse に import すると,次のようなエラーが発生します.
    value Application is not a member of package views
    
    これを回避するためには,プロジェクトを起動させ,scala ファイル(および class ファイル)を自動生成させる必要があります.
    エラーは無視して,eclipse 上からプロジェクトを起動させます.起動させるためには,hoge/eclipse/hoge.launch を右クリックから実行させればOKです.コンソールに
    Listening for transport dt_socket at address: 8000
    08:24:00,422 INFO  ~ Starting /some/workspace/hoge
    08:24:00,446 INFO  ~ Module scala is available (/opt/play-1.2.2/modules/scala-0.9.1)
    08:24:01,431 INFO  ~ Scala support is active
    08:24:01,432 WARN  ~ You're running Play! in DEV mode
    08:24:01,471 INFO  ~ Listening for HTTP on port 9000 (Waiting a first request to start) ...
    
    のように表示されたら,ブラウザから http://localhost:9000 にアクセスします.そこで再度コンソールを見ると
    Compiling:
     /some/workspace/hoge/app/controllers.scala
     /opt/play-1.2.2/modules/docviewer/app/helpers/CheatSheetHelper.java
     /opt/play-1.2.2/modules/docviewer/app/DocViewerPlugin.java
     /some/workspace/hoge/tmp/generated/views.defaults.html.welcome.scala
     /some/workspace/hoge/tmp/generated/views.html.main.scala
     /opt/play-1.2.2/modules/docviewer/app/controllers/PlayDocumentation.java
     /some/workspace/hoge/tmp/generated/views.Application.html.index.scala
    Traversing /some/workspace/hoge/app/controllers.scala
    Traversing /some/workspace/hoge/tmp/generated/views.Application.html.index.scala
    Traversing /some/workspace/hoge/tmp/generated/views.defaults.html.welcome.scala
    Traversing /some/workspace/hoge/tmp/generated/views.html.main.scala
    API phase took : 0.114 s
    08:24:21,920 INFO  ~ Application 'hoge' is now started !
    
    のように自動でコンパイルが行われていることがわかります.あとは,hoge プロジェクトを右クリックして,[プロパティー]→[Java のビルド・パス]→[ライブラリー]→[クラス・フォルダーの追加]から,hoge/tmp/classes を選択して,[OK]を選べばエラーが発生しなくなります.
  4. eclipse 設定ファイルを管理対象外にする

    最後に,play eclipsify にて生成されたファイルやプロジェクト起動時に自動生成されたファイルを svn へコミットしないようにしておきます.管理対象外とするのは,以下のファイルおよびディレクトリです.
    • hoge/.settings/
    • hoge/eclipse/
    • hoge/tmp/
    • hoge/.classpath
    • hoge/.project
    • hoge/.scala_dependencies
    上記のファイルおよびディレクトリを選択し,右クリック→[チーム]→[svn:ignore に追加]とすればOKです.

0 件のコメント:

コメントを投稿