2012-05-23 20 views
6

tengo la siguiente generación de proyecto:¿Cómo funcionan los "resolutores transitivos" con 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 
) 

} 

Cuando incluyo la biblioteca resultante en otro proyecto, así:

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

e intento de construir ese proyecto, me sale un error que me llevó que la biblioteca "org.basex% basex% 7.2.1" a la que hace referencia ese proyecto no se puede encontrar.

Tengo que ir y agregar la resolución en el proyecto "cliente" para que se encuentre la biblioteca. Hay alguna manera de evitar esto?

Respuesta

1

No hay resolvedores transitivos, por lo que el usuario de la compilación necesita conocer todos los resolvedores de todas las dependencias de la biblioteca transitiva. El beneficio de este enfoque es que en los proyectos de código abierto, alienta a los proyectos a publicar en uno de los repositorios conocidos conectados a los resolvers conocidos.

Para uso corporativo, puede evitar que su tráfico vaya a lugares desconocidos introducidos por algunas dependencias en el gráfico.

Para compartir la configuración del resolver dentro de la organización, puede crear un complemento de toda la organización.

+1

Solo asegurándome de que entiendo correctamente: cuando uso una biblioteca que tiene dependencias en otro resolver, necesito agregar los resolvedores en sentido ascendente manualmente, ¿o sí? –