sbtプロジェクトをEclipseで使う

LiftでMavenを使おうかsbtを使おうか迷っていたのですが、ふとMavenならEclipse上で扱うのも簡単だけどsbtの場合はどうすればいいんだろう?というわけで少し調べてみました。結論としてはSbtEclipsifyというモノを使うといいらしい。

上記のページを見ればやり方はわかると思うけど、いちおう手順をメモしておきます。
まず、project/pluginsというディレクトリを作成し、MySbtProjectPlugins.scalaというファイルを作成します。

import sbt._

class MySbtProjectPlugins(info: ProjectInfo) extends PluginDefinition(info) {
  lazy val eclipse = "de.element34" % "sbt-eclipsify" % "0.7.0"
}

んで、たとえばLiftの場合project/build/LiftProject.scalaというファイルがあるので以下のようにEclipsifyをミックスインします。

import sbt._
import de.element34.sbteclipsify._ // ここを追加

class LiftProject(info: ProjectInfo) 
  extends DefaultWebProject(info) with Eclipsify { // with Eclipsifyを追加
  ...
}

これでコマンドラインから以下のように実行することでEclipse用の設定ファイル(.projectとか.classpath)が生成されます。

$ sbt reload
$ sbt eclipse

ちなみにNetBeansの場合はsbt make-pomでpom.xmlを作成して普通にプロジェクトとして開くのがいいみたい。