Documentation

You are viewing the documentation for the 2.2.0 release in the 2.2.x series of releases. The latest stable release series is 2.4.x.

§ライブラリ依存性の管理

§管理されない依存性

ほとんどの開発者は最終的には「管理された依存性」を利用することになりますが、最初は「管理されない依存性」から始めた方がわかりやすいこともあります。

「管理されない依存性」は次のように利用します: プロジェクトルートに lib/ ディレクトリを作成し、このディレクトリに jar ファイルを追加します。これらは自動的にアプリケーションのクラスパスに追加されます。これだけです!

この場合、build.sbt へ依存性を記述する必要はありませんが、lib 以外の場所に JAR ファイルを入れたい場合は、設定キーを変更することができます。

§管理された依存性

Play は「管理された依存性」を実現するために、Apache Ivy を利用しています。もし、Maven や Ivy に詳しければ、特に困ることはないでしょう。

たいていの場合は、依存モジュールを build.sbt ファイルへリストアップするだけでよいでしょう。

依存性の定義は、次のように書きます。(groupartifactrevision を定義します。)

libraryDependencies += "org.apache.derby" % "derby" % "10.4.1.3"

または、任意で指定できる configuration を付け足すことができます。

libraryDependencies += "org.apache.derby" % "derby" % "10.4.1.3" % "test"

複数の依存性は上記のように複数の定義によって追加することもできますし、Scala のシーケンスを提供することもできます:

libraryDependencies ++= Seq(
  "org.apache.derby" % "derby" % "10.4.1.3",
  "org.hibernate" % "hibernate-entitymanager" % "3.6.9.Final"
  )

sbt (内部で Ivy を使っています) は、モジュールのダウンロード元を知っている必要があります。モジュールが sbt に組み込まれたデフォルトのレポジトリのいずれかに含まれていれば、特に何もしなくても動きます。

§%% を使って適切な Scala バージョンを選択する

groupID % artifactID % revision のかわりに、groupID %% artifactID % revision というというように、groupID の後に % を二つ重ねて記述することで、sbt はプロジェクトに設定された Scala バージョンに対応したアーティファクトをダウンロードしてくれます。

これは単なるショートカットであり、%% を使わずに書くこともできます。

val appDependencies = Seq(
  "org.scala-tools" % "scala-stm_2.9.1" % "0.3"
)

例えば、ビルドファイルで scalaVersion2.9.1 を指定している場合、次の定義も全く同じ意味になります。

val appDependencies = Seq(
  "org.scala-tools" %% "scala-stm" % "0.3"
)

§リゾルバ

sbt は、標準 Maven2 レポジトリと、Typesafe Releases レポジトリ (http://repo.typesafe.com/typesafe/releases) をデフォルトとして利用します。定義した依存モジュールがデフォルトのレポジトリに無い場合は、Ivy がモジュールを探せるように、リゾルバを自分で追加してやる必要があります。

resolvers という設定キーを使って独自のリゾルバを追加します。

resolvers += name at location

例えば、

resolvers += "Scala-Tools Maven2 Snapshots Repository" at "http://scala-tools.org/repo-snapshots"

ローカルに Maven レポジトリを作成しておき、sbt に検索させることも可能です。

resolvers += (
    "Local Maven Repository" at "file:///"+Path.userHome.absolutePath+"/.m2/repository"
)

Next: サブプロジェクト