2012-05-23 10 views
6

Ich habe folgendes Projekt zu bauen:Wie funktionieren "transitive Resolver" mit 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 
) 

} 

Wenn ich die resultierende Bibliothek in einem anderen Projekt enthalten, etwa so:

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

und ich versuche, das Projekt zu erstellen, bekomme ich einen Fehler mich auffordert dass die Bibliothek "org.basex% basex% 7.2.1", auf die von diesem Projekt verwiesen wird, nicht gefunden werden kann.

Ich muss gehen und den Resolver im "Client" -Projekt hinzufügen, damit die Bibliothek gefunden wird. Gibt es eine Möglichkeit, dies zu vermeiden?

Antwort

1

Da es keine transitiven Resolver gibt, muss der Erstellungsbenutzer alle Resolver aller transitiven Bibliotheksabhängigkeiten kennen. Der Vorteil dieses Ansatzes besteht darin, dass bei den OpenSource-Projekten Projekte gefördert werden, die in einem der bekannten Repositorys veröffentlicht werden, die mit den bekannten Resolvern verbunden sind.

Für die Verwendung in Unternehmen können Sie verhindern, dass Ihr Datenverkehr zu unbekannten Orten führt, die durch einige Abhängigkeiten im Diagramm verursacht werden.

Um Resolver-Einstellungen innerhalb der Organisation freizugeben, können Sie ein organisationsweites Plugin erstellen.

+1

Nur sicherstellen, dass ich richtig verstehe: Wenn ich eine Bibliothek verwende, die Abhängigkeiten in einem anderen Resolver hat, muss ich die Resolver Upstream von Hand hinzufügen - ist das? –