Ich habe Probleme mit einer Maven-Abhängigkeit, die sich in meinem lokalen Repository befindet.
SBT kann es nicht finden. Stellen Sie die Protokollstufe bereits auf Debuggen ein, erhalten Sie jedoch nichts Neues.
Die Dateien befinden sich im Repository. Ich kopiere Einfügepfade von der Konsole in den Datei-Explorer und sie sind da.
Die Ausgabe:
[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
Bearbeiten: Ich habe den Pfad mithilfe der Scala-Datei in project / build hinzugefügt, wie unter http://code.google.com/p/simple-build-tool/wiki/LibraryManagement beschrieben
"sbt kann Ihr lokales Maven-Repository durchsuchen, wenn Sie es als Repository hinzufügen:"
val mavenLocal = "Local Maven Repository" at "file://"+Path.userHome+"/.m2/repository"
Dadurch sah sbt im lokalen Repository aus. Vorher nicht.
Die Scala-Datei sieht also folgendermaßen aus:
import sbt._
class Foo(info: ProjectInfo) extends DefaultProject(info) {
val mavenLocal = "Local Maven Repository" at "file://c:/Users/userz/.m2/repository"
}
(Ich habe Path.userHome fest codiert, um mögliche Fehlerursachen auszuschließen. Wie erwartet hat sich nichts geändert.)
Antworten:
Sie benötigen drei Schrägstriche nach dem
file:
Bezeichner. Dies liegt daran, dass Sie zwischen dem zweiten und dritten Schrägstrich einen optionalen Hostnamen haben. Wikipedia hat eine gute Erklärung fürfile:
URLsSie haben ein Problem, weil das typische Muster von
"file://"+Path.userHome+"/.m2/repository"
ein Unix-Dateisystem annimmt, bei dem der Pfad mit a beginnt/
, no enthält:
und normalerweise keine Leerzeichen enthält.Verwenden Sie Folgendes, um einen nicht fest codierten Pfad zu erhalten, der sowohl unter Windows als auch unter Linux / Unix funktioniert:
"Local Maven" at Path.userHome.asFile.toURI.toURL + ".m2/repository"
quelle
Fügen Sie diese Zeile einfach in die Datei build.scala oder build.sbt ein
quelle
resolvers in Global := Resolver.mavenLocal
funktioniert bei mir.ThisBuild / resolvers += Resolver.mavenLocal
Fügen Sie build.sbt Folgendes hinzu, damit dies für neuere Versionen von sbt funktioniert:
resolvers += "Local Maven Repository" at "file:///"+Path.userHome+"/.m2/repository"
quelle
resolvers in Global += "Local Maven Repository" at "file://" + Path.userHome + "/.m2/repository"
Wenn Sie ein Projekt definiert haben, müssen Sie den Resolver in die Einstellungen einbeziehen. Globaler Resolver wird nicht identifiziert.
Beispiel:
lazy val core = (project in file("core")). settings(commonSettings: _*). settings( resolvers += Resolver.mavenLocal, name := "Core", libraryDependencies := coreDependencies )
quelle