日記的「駄目」プログラミング Yet Another Hacking Life

ググるだけが能じゃない(Scalaの小ネタ)

07.31.2012 · Posted in Lift, Scala, プログラミング

sbtのbuild.sbtへの依存関係の記述にからむ小ネタ

そこそこどうでもいいあらすじ

Scala+liftwebでMongoDBを使っています。初めはLiftのmapperを使っていたんだけど、スキーマレスとORマッピングの相性が悪いというか、そこに収まらない使い方をしたくなったのでcasbahを使うことにしました。

ビルドにはsbtを使っているんだけれど、依存関係の記述をどう記述するかでハマりました。Scalaのバージョンは2.9.1、Liftのバージョンは2.4。最終的に以下のようなbuild.sbtになった。

name := "nicoplus"

version := "1.0.0"

organization := "com.geekfield"

scalaVersion := "2.9.1"

scalacOptions += "-deprecation"

seq(webSettings :_*)

libraryDependencies ++= Seq(
"net.liftweb" %% "lift-webkit" % "2.4" % "compile",
"net.liftweb" %% "lift-mapper" % "2.4" % "compile",
"net.liftweb" %% "lift-mongodb-record" % "2.4" % "compile",
"org.mortbay.jetty" % "jetty" % "6.1.26" % "container, test",
"junit" % "junit" % "4.7" % "test",
"ch.qos.logback" % "logback-classic" % "0.9.26",
"org.scala-tools.testing" %% "specs" % "1.6.9" % "test",
"com.h2database" % "h2" % "1.2.147",
"mysql" % "mysql-connector-java" % "5.1.20",
"net.databinder" %% "dispatch-http" % "0.8.8",
"net.databinder" %% "dispatch-oauth" % "0.8.8",
"net.databinder" %% "dispatch-json" % "0.8.8",
"net.databinder" %% "dispatch-http-json" % "0.8.8",
"org.mongodb" %% "casbah" % "2.4.0"
)

resolvers += "Sonatype OSS Snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"

「scala 2.9.1 casbah」でGoogle検索してヒットした記述を試しても、なかなかSBTで依存関係が解決できませんでした。

本論

どうもRuby gemとかGitHubとかあたりからこっち、最近のライブラリ界隈はバージョンの上がり方が早いです。参考になるブログはあっても「現在、使いたいライブラリのどのバージョンが、使いたい言語・フレームワークに対応しているか。どのリポジトリにあって、どう記述すればよいか」あたりのアップトゥデートな情報はGoogle検索で見つけづらいことがあります。ライブラリのサイトにすら載ってないことがあります。

っつーことで、「ブログどおりにbuild.sbtやpom.xmlを記述したのに依存関係が解決できないよー」というときはMaven RepositorySonatype OSS Maven Repositoryのサイトで使いたいライブラリを検索するとよいでしょう。

それだけのお話だったのさ。RubyとかPython界隈の人たちはどうしてるんでしょうね。依存関係に細かいバージョンまで記述するのはMaven系固有の事情なんでしょうか?

Leave a Reply