web-dev-qa-db-fra.com

SBT ne trouve pas de fichier dans le référentiel maven local bien qu'il soit là

J'ai des problèmes avec une dépendance maven qui se trouve dans mon référentiel local.

SBT ne le trouve pas. Vous avez déjà défini le niveau de journalisation sur le débogage, mais vous ne recevez rien de nouveau.

Les fichiers sont dans le référentiel. Je copie les chemins de collage depuis la console vers l'Explorateur de fichiers et ils sont là.

Le résultat:

[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

Edit: J'ai ajouté le chemin en utilisant scala dans le projet/build comme décrit dans http://code.google.com/p/simple-build-tool/wiki/LibraryManagement

"sbt peut rechercher votre référentiel Maven local si vous l'ajoutez en tant que référentiel:"

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

Cela a fait regarder sbt dans le référentiel local. Avant, ce n'était pas le cas.

Ainsi, le fichier scala ressemble à ceci:

import sbt._

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

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

}

(J'ai codé en dur Path.userHome pour exclure une raison d'erreur possible. Comme prévu, cela n'a rien changé).

70
Ixx

Vous avez besoin de trois barres obliques après le file: spécificateur. En effet, entre la deuxième et la troisième barre oblique, vous disposez d'un nom d'hôte facultatif. Wikipedia a une bonne explication de file: URL

Vous rencontrez un problème, car le schéma typique de "file://"+Path.userHome+"/.m2/repository" suppose un système de fichiers Unix, où le chemin commence par un /, ne contient pas :, et ne contient généralement aucun espace.

Pour avoir un chemin non codé en dur qui fonctionne à la fois sur Windows et Linux/Unix, utilisez:

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

Ajoutez simplement cette ligne dans le fichier build.scala ou build.sbt

resolvers += Resolver.mavenLocal
129
Ben Rhouma Zied

Pour que cela fonctionne avec les nouvelles versions de sbt, ajoutez ce qui suit à build.sbt:

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

Attention quand vous avez un projet défini, vous devrez inclure le résolveur dans les paramètres. Le résolveur global ne sera pas identifié.

Exemple:

lazy val core = (project in file("core")).
  settings(commonSettings: _*).
  settings(
    resolvers += Resolver.mavenLocal,
    name := "Core",
    libraryDependencies := coreDependencies
  )
3
Dyin