Play framework 2.0のeclipsifyでjarのソースも設定する

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Eclipseでplayframeworkを使った開発

先日twitterを眺めていたら、play2.0のeclipsifyに関する話題があったのでご紹介。
eclipsifyではwith-sourceオプションをつけることができ、これをするとplayやそれに関連するソースもattachしてくれるとのことです。
これは便利だということで試してみました。

今回使用した動作環境は以下のとおりです。

  • OS : MacOS X 10.7.3
  • Playframework : 2.0.1
  • Java : 1.6.0_26

プロジェクト作成

Scalaベースのプロジェクトを作成しましょう。

% play new withsource
% cd withsource

設定の編集

ここにあるように、プロジェクトのルートにivysettings.xmlを作成します。

<ivysettings>
<!-- Build.scalaのsettingsにexternalIvySettings()を追加すると有効 -->
  <caches useOrigin="true"/>
  <settings defaultResolver="play"/>
  <resolvers>
    <chain name="play">
      <filesystem name="1">
        <!-- ここは絶対パスじゃないとだめ。playの${sbt.ivy.home}は相対パスだった -->
        <artifact pattern="/path-your-play-src/[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" />
      </filesystem>
      <url name="typesafe-ivy-release">
        <artifact pattern="http://repo.typesafe.com/typesafe/ivy-releases/[organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]"/>
      </url>
      <ibiblio name="typesafe-release" m2compatible="true" root="http://repo.typesafe.com/typesafe/releases/"/>
      <ibiblio name="maven2" m2compatible="true"/>
    </chain>
  </resolvers>
</ivysettings>

自分の場合、各環境の絶対パスを設定するartifact部分はhomebrewでインストールしたため、「/usr/local/Cellar/play/2.0.1/libexec/repogitory/local」でした。

次に、project/Build.scalaのsettingsにexternalIvySettings()を追加します。

import sbt._
import Keys._
import PlayProject._

object ApplicationBuild extends Build {

    val appName         = "withsource"
    val appVersion      = "1.0-SNAPSHOT"

    val appDependencies = Seq(
      // Add your project dependencies here,
    )

    val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings(
      //ここを追加
     externalIvySettings()
    )

eclipsifyの実行

playコンソールを起動し、eclipsifyを実行します。

$ play
[withsource] $ eclipsify with-source=true

かなり長い時間がかかりますが、ソースを含めて依存するjarのダウンロードが行われます。
eclipsifyが完了したらEclipseからimportしてみましょう。
デフォルトで生成されるapplication.scalaファイルを開き、Conctrollerクラスを開いてみると、クラス定義が表示されます。

まとめ

今回はソースつきでeclipsifyをする方法をご紹介しました。
現状はAnormのソースが見れなかったり、いくつか不具合があるようですが、Play本体のソースは一応みれるので役に立つかと思います。