§ライブラリ依存関係の管理
注: このページの一部は、sbt のマニュアル、特にライブラリの依存関係のページからコピーされました。より詳細で最新の情報については、そのページを参照してください。
§管理外依存関係
ほとんどの人は管理された依存関係を使用することになります。これにより、きめ細かい制御が可能になりますが、始めたばかりのときは、管理されていない依存関係の方が簡単です。
管理されていない依存関係は次のように機能します。プロジェクトのルートにlib/
ディレクトリを作成し、そのディレクトリにjarファイルを追加します。それらは自動的にアプリケーションのクラスパスに追加されます。他に難しいことはありません。
管理されていない依存関係を使用するためにbuild.sbt
に追加するものはありません。ただし、lib
とは異なるディレクトリを使用したい場合は、構成キーを変更できます。
§管理された依存関係
Playは、管理された依存関係を実装するために、Apache Ivy(sbt経由)を使用します。MavenまたはIvyに慣れている場合は、すでに管理された依存関係に慣れているはずです。
ほとんどの場合、build.sbt
ファイルに依存関係をリストするだけで済みます。
依存関係の宣言は、次のようになります(group
、artifact
、revision
を定義します)。
libraryDependencies += "org.apache.derby" % "derby" % "10.16.1.1"
または、オプションのconfiguration
を指定して、次のようになります。
libraryDependencies += "org.apache.derby" % "derby" % "10.16.1.1" % "test"
複数の依存関係は、上記のような複数の宣言によって追加することも、Scalaシーケンスを提供することもできます。
libraryDependencies ++= Seq(
"org.apache.derby" % "derby" % "10.16.1.1",
"org.hibernate" % "hibernate-core" % "6.4.4.Final"
)
もちろん、sbt(Ivy経由)は、モジュールをダウンロードする場所を知っている必要があります。モジュールがsbtに付属しているデフォルトのリポジトリのいずれかにある場合、これはうまく機能します。
§%%
を使用して適切なScalaバージョンを取得する
groupID % artifactID % revision
(違いは、groupID
の後の二重の%%
です)ではなくgroupID %% artifactID % revision
を使用すると、sbtはプロジェクトのScalaバージョンを成果物名に追加します。これは単なるショートカットです。%%
なしでこれを記述することもできます。
libraryDependencies += "org.scala-stm" % "scala-stm_2.13" % "0.9.1"
ビルドのscalaVersion
が2.13.13
であると仮定すると、以下は同一です("org.scala-tools"
の後の二重の%%
に注意してください)。
libraryDependencies += "org.scala-stm" %% "scala-stm" % "0.9.1"
これは、多くの依存関係が複数のScalaバージョン用にコンパイルされており、バイナリ互換性を確保するためにプロジェクトに一致するものを取得したいという考えに基づいています。
§リゾルバー
デフォルトでは、sbtはMaven Centralを使用し、使用しているsbtのバージョンによっては、他のリポジトリを使用する場合があります。これらのリポジトリは、sbt ここで見つけることができます(sbtのバージョンに対応するタグを選択してください)。
resolvers
設定キーを使用して、独自のリゾルバーを追加します。例:
resolvers ++= Resolver.sonatypeOssRepos("snapshots")
リポジトリとして追加すると、sbtはローカルのMavenリポジトリを検索できます。
resolvers += (
"Local Maven Repository".at(s"file:///${Path.userHome.absolutePath}/.m2/repository")
)
§依存関係間の競合の処理
sbtには、依存関係間の競合を管理する方法に関する広範なドキュメントがあります。
sbt-dependency-graphを使用して、依存関係ツリーをより視覚的に表示することもできます。 sbt のデバッグに関するページも参照してください。
次: サブプロジェクトを扱う
このドキュメントにエラーを見つけましたか?このページのソースコードはこちらにあります。 ドキュメントのガイドラインを読んだら、お気軽にプルリクエストを送信してください。質問や共有するアドバイスはありますか? コミュニティフォーラムにアクセスして、コミュニティとの会話を開始してください。