scala - SBT no encuentra el archivo en el repositorio maven local aunque está allí
(4)
Estoy teniendo problemas con una dependencia de maven que está en mi repositorio local.
SBT no puede encontrarlo. Ya se ha configurado el nivel de registro para depurar, pero no se obtiene nada nuevo.
Los archivos están en el repositorio. Copio las rutas de pegado de la consola al explorador de archivos y están allí.
La salida:
[debug] trying file://c:/Users/userz/.m2/repository/com/twitter/naggati/2.0.0/naggati-2.0.0.pom
[debug] tried file://c:/Users/userz/.m2/repository/com/twitter/naggati/2.0.0/naggati-2.0.0.pom
[debug] Local Maven Repository: resource not reachable for com/twitter#naggati;2.0.0: res=file://c:/Users/userz/.m2/repository/com/twitter/naggati/2.0
.0/naggati-2.0.0.pom
[debug] trying file://c:/Users/userz/.m2/repository/com/twitter/naggati/2.0.0/naggati-2.0.0.jar
[debug] tried file://c:/Users/userz/.m2/repository/com/twitter/naggati/2.0.0/naggati-2.0.0.jar
[debug] Local Maven Repository: resource not reachable for com/twitter#naggati;2.0.0: res=file://c:/Users/userz/.m2/repository/com/twitter/naggati/2.0
.0/naggati-2.0.0.jar
[debug] Local Maven Repository: no ivy file nor artifact found for com.twitter#naggati;2.0.0
Editar: agregué la ruta usando el archivo scala en proyecto / compilación como se describe en http://code.google.com/p/simple-build-tool/wiki/LibraryManagement
"sbt puede buscar en su repositorio Maven local si lo agrega como un repositorio:"
val mavenLocal = "Local Maven Repository" at "file://"+Path.userHome+"/.m2/repository"
Eso hizo que sbt se vea en el repositorio local. Antes no lo hizo.
Entonces el archivo scala se ve así:
import sbt._
class Foo(info: ProjectInfo) extends DefaultProject(info) {
val mavenLocal = "Local Maven Repository" at "file://c:/Users/userz/.m2/repository"
}
(Codifiqué Path.userHome para excluir el posible error. Como era de esperar, no cambió nada).
Necesitas tres barras después del file:
especificador. Esto se debe a que entre la segunda y la tercera barra inclinada, tiene un nombre de host opcional. Wikipedia tiene una buena explicación de file:
URL
Tiene un problema porque el patrón típico de "file://"+Path.userHome+"/.m2/repository"
asume un sistema de archivos Unix, donde la ruta comienza con a /
, no contiene :
y por lo general no contiene espacios .
Para tener una ruta no codificada que funcione en Windows y Linux / Unix, use:
"Local Maven" at Path.userHome.asFile.toURI.toURL + ".m2/repository"
Para que esto funcione para las versiones más nuevas de sbt, agregue lo siguiente a build.sbt:
resolvers += "Local Maven Repository" at "file:///"+Path.userHome+"/.m2/repository"
Simplemente agregue esta línea en el archivo build.scala o build.sbt
resolvers += Resolver.mavenLocal
Tenga cuidado cuando tenga un proyecto definido, tendrá que incluir el resolver en la configuración. La resolución global no será identificada.
Ejemplo:
lazy val core = (project in file("core")).
settings(commonSettings: _*).
settings(
resolvers += Resolver.mavenLocal,
name := "Core",
libraryDependencies := coreDependencies
)