2012-05-27 16 views
61

Tengo problemas con una dependencia de maven que está en mi repositorio local.SBT no encuentra el archivo en el repositorio local de maven aunque está allí

SBT no lo puede encontrar. 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 

Edición: He añadido el camino usando el archivo Scala de proyecto/construcción como se describe en http://code.google.com/p/simple-build-tool/wiki/LibraryManagement

"SBT puede buscar su repositorio local de Maven si se agrega como un repositorio: "

val mavenLocal = "Local Maven Repository" at "file://"+Path.userHome+"/.m2/repository" 

Eso hizo que sbt mirara en el repositorio local. Antes no lo hizo.

Así que el archivo Scala se parece a esto:

import sbt._ 

class Foo(info: ProjectInfo) extends DefaultProject(info) { 

val mavenLocal = "Local Maven Repository" at "file://c:/Users/userz/.m2/repository" 

} 

(I codificada de manera no Path.userHome excluir posible razón de error Como era de esperar que no cambia nada.).

+0

Hay que añadir el repositorio Maven local a su build.sbt – leedm777

+0

Se añade el repositorio, de lo contrario el guión no se vería allí por los archivos. – Ixx

+0

¿Cómo es la línea que le dice a sbt que busque su dependencia? Si tiene algo así como ... -> predeterminado, elimine el valor predeterminado de allí. – fmpwizard

Respuesta

57

Necesita tres barras después del especificador file:. 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: de URL

Estás teniendo un problema porque el patrón típico de "file://"+Path.userHome+"/.m2/repository" asume un sistema de archivos Unix, donde el camino comienza con un /, no contiene :, y por lo general no contiene espacios.

Tener una trayectoria no hardcoded que funciona tanto en Windows y Linux/Unix, utilice:

"Local Maven" at Path.userHome.asFile.toURI.toURL + ".m2/repository" 
+0

no con los proyectos definidos y agregando al proyecto no funciona tampoco – pferrel

+0

resuelto mi problema en mac. – Daniel

21

Para conseguir que esto funcione hay nuevas versiones de SBT, añada lo siguiente a build.sbt:

resolvers += "Local Maven Repository" at "file:///"+Path.userHome+"/.m2/repository" 
+1

3 barras hicieron el truco! – Esk

+1

No importa lo que haga, sigo teniendo este error al hacer la compilación de sbt: [warn] :::::::::::::::::::::::::::::: :::::::::::::::: [advertir] :: DEPENDENCIAS SIN RESOLVER :: [advertir] :::::::::::::::::::: :::::::::::::::::::::::::: [warn] :: com.sanoma.cda # maxmind-geoip2-scala_2.11; 1.3.2: no encontrado [advertir] :::::::::::::::::::::::::::::::::::::::::::: :: [traza] Seguimiento de pila suprimido: ejecutar último *: actualizar para la salida completa. [error] (*: actualización) sbt.ResolveException: dependencia no resuelta: com.sanoma.cda # maxmind-geoip2-scala_2.11; 1.3.2: no encontrado – bashan

+1

no funciona para mí – pferrel

110

Sólo añadir esta línea en el archivo build.scala o build.sbt

resolvers += Resolver.mavenLocal 
+1

Esto no funciona para mí con el último SBT. – Dyin

+2

¿Qué sbt es ese? Lo usé con 0.13.11 y funciona bien. – marios

+0

no con proyectos definidos – pferrel

3

Cuidado cuando se tiene un pr oject definido, deberá 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 
) 
+0

no funciona para mí, aunque puede tener algo que ver con los proyectos – pferrel

+1

Gracias Dyin, Funcionó. Solución de problemas añadida a commonSettings, ahora todos los proyectos definidos pueden buscar en repositorio maven local para las dependencias. – raevilman

Cuestiones relacionadas