この記事は公開されてから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本体のソースは一応みれるので役に立つかと思います。