SBT doesn't find file in local maven repository although it's there
Solution 1
You need three slashes after the file:
specifier. This is because between the second and third slash, you have an optional hostname. Wikipedia has a good explanation of file:
URL's
You're having a problem because the typical pattern of "file://"+Path.userHome+"/.m2/repository"
assumes a Unix filesystem, where the path begins with a /
, contains no :
, and usually contains no spaces.
To have a non-hardcoded path that works on both Windows and Linux/Unix, use:
"Local Maven" at Path.userHome.asFile.toURI.toURL + ".m2/repository"
Solution 2
Just add this line in the build.scala or build.sbt file
resolvers += Resolver.mavenLocal
Solution 3
To get this to work for newer versions of sbt, add the following to build.sbt:
resolvers += "Local Maven Repository" at "file:///"+Path.userHome+"/.m2/repository"
Solution 4
Watch out when you have a project defined, you'll need to include the resolver in the settings. Global resolver will not be identified.
Example:
lazy val core = (project in file("core")).
settings(commonSettings: _*).
settings(
resolvers += Resolver.mavenLocal,
name := "Core",
libraryDependencies := coreDependencies
)
Related videos on Youtube
User
Updated on July 05, 2022Comments
-
User almost 2 years
I'm having problems with a maven dependency which is in my local respository.
SBT can't find it. Already set log level to debug, but not getting anything new.
The files are in the repository. I copy paste paths from the console to file explorer and they are there.
The output:
[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: I added the path using scala file in project/build like described in http://code.google.com/p/simple-build-tool/wiki/LibraryManagement
"sbt can search your local Maven repository if you add it as a repository:"
val mavenLocal = "Local Maven Repository" at "file://"+Path.userHome+"/.m2/repository"
That made sbt look in the local repository. Before it didn't.
So the scala file looks like this:
import sbt._ class Foo(info: ProjectInfo) extends DefaultProject(info) { val mavenLocal = "Local Maven Repository" at "file://c:/Users/userz/.m2/repository" }
(I hardcoded Path.userHome to exclude possible error reason. As expected it didn't change anything).
-
leedm777 almost 12 yearsYou have to add the local maven repo to your build.sbt
-
User almost 12 yearsThe repository is added, otherwise the script would not look there for the files.
-
fmpwizard almost 12 yearsHow is the line that tells sbt to look for your dependency? If you have something like ... -> default, remove default from there.
-
User almost 12 yearsActually I'm not using build.sbt. I'm using a scala file like described in code.google.com/p/simple-build-tool/wiki/LibraryManagement. Edited my post with more details.
-
leedm777 almost 12 yearsixx: That's SBT 0.7.x, and it's the legacy version. You should update to [SBT 0.11.x])github.com/harrah/xsbt/wiki), if possible.
-
-
bashan about 9 yearsNo matter what I do I still get this error when doing sbt compile: [warn] :::::::::::::::::::::::::::::::::::::::::::::: [warn] :: UNRESOLVED DEPENDENCIES :: [warn] :::::::::::::::::::::::::::::::::::::::::::::: [warn] :: com.sanoma.cda#maxmind-geoip2-scala_2.11;1.3.2: not found [warn] :::::::::::::::::::::::::::::::::::::::::::::: [trace] Stack trace suppressed: run last :update for the full output. [error] (:update) sbt.ResolveException: unresolved dependency: com.sanoma.cda#maxmind-geoip2-scala_2.11;1.3.2: not found
-
marios over 7 yearsWhich sbt is that? I used it with 0.13.11 and it works just fine.
-
pferrel over 6 yearsdoesn't work for me, though it may have something to do with projects
-
pferrel over 6 yearsnot with projects defined and adding to the project doesn't work either
-
raevilman over 6 yearsThanks Dyin, It worked. Added resolver to commonSettings, now all defined projects can look into local maven repo for dependencies.
-
retronym over 6 years
resolvers in Global := Resolver.mavenLocal
works for me. -
Hartmut Pfarr over 5 yearsOMG I've searched an hour for this perfect solution! Thx
-
Ben McCann about 5 years@retronym, I think you meant "resolvers in Global += Resolver.mavenLocal"
-
slugmandrew over 4 yearsAmazing that it's such a simple solution. Cheers!
-
antex over 4 yearsFor SBT 1.3.x it's
ThisBuild / resolvers += Resolver.mavenLocal
-
Carlos Ferreyra almost 4 yearsI used
resolvers in Global += "Local Maven Repository" at "file://" + Path.userHome + "/.m2/repository"