2012-05-23 18 views
6

私は次のプロジェクトのビルドを持っている:「推移的リゾルバ」はSBTとどのように機能しますか?

import sbt._ 
import Keys._ 

object ProjectBuild extends Build { 

    val buildVersion = "0.1-SNAPSHOT" 

    val delvingReleases = "Delving Releases Repository" at "http://development.delving.org:8081/nexus/content/repositories/releases" 
    val delvingSnapshots = "Delving Snapshot Repository" at "http://development.delving.org:8081/nexus/content/repositories/snapshots" 
    val delvingRepository = if (buildVersion.endsWith("SNAPSHOT")) delvingSnapshots else delvingReleases 

    lazy val root = Project(
    id = "basex-scala-client", 
    base = file(".") 
).settings(

    organization := "eu.delving", 
    version := buildVersion, 

    resolvers += "BaseX Repository" at "http://files.basex.org/maven", 

    libraryDependencies += "org.basex" %  "basex" % "7.2.1", 
    libraryDependencies += "org.specs2" %% "specs2" % "1.7.1" % "test", 

    publishTo := Some(delvingRepository), 

    credentials += Credentials(Path.userHome/".ivy2"/".credentials"), 

    publishMavenStyle := true 
) 

} 

私はそうのような別のプロジェクトで得られたライブラリー含める場合:

"eu.delving"   %% "basex-scala-client"   % "0.1-SNAPSHOT" 

を、私はそのプロジェクトをビルドしようと、私は私を促すエラーが出ますそのプロジェクトが参照する "org.basex%basex%7.2.1"ライブラリが見つかりません。

"クライアント"プロジェクトにリゾルバを追加して、ライブラリを見つける必要があります。これを避ける方法はありますか?

答えて

1

推移的リゾルバはありません。したがって、ビルドユーザは推移的ライブラリのすべての依存関係のすべてのリゾルバを知る必要があります。このアプローチの利点は、オープンソースプロジェクトでは、既知のリゾルバに接続されている既知のリポジトリの1つにプロジェクトを公開することが推奨されます。

企業向けには、グラフの下にある依存関係によって導入された未知の場所にトラフィックが流れないようにすることができます。

組織内でリゾルバ設定を共有するには、組織全体のプラグインを作成できます。

+1

正しく理解していることを確認してください:別のリゾルバに依存するライブラリを使用する場合、リゾルバを手作業でアップストリームに追加する必要がありますか? –