Documentation

You are viewing the documentation for the 2.6.x development release. The latest stable release series is 2.4.x.

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

§管理されない依存性

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

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

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

§管理された依存性

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

ほとんどの場合、単純に build.sbt ファイルの中に依存性を羅列することができます。

依存性の定義は、次のように書きます (group, artifact, revision を定義します):

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

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

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

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

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

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

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

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

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

libraryDependencies += "org.scala-tools" % "scala-stm_2.9.1" % "0.3"

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

libraryDependencies += "org.scala-tools" %% "scala-stm" % "0.3"

§リゾルバ

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

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

resolvers += name at location

例えば、

resolvers += "sonatype snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/"

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

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

Next: サブプロジェクトを使う


このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。