SBT 不会在本地 maven 存储库中找到文件,尽管它存在

我在本地仓库中遇到了 Maven 依赖关系的问题。

SBT 找不到它。已经将日志级别设置为调试,但是没有得到任何新的内容。

文件在存储库中。我将粘贴路径从控制台复制到文件资源管理器,它们就在那里。

输出:

[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

编辑: 我在 project/build 中使用 scala 文件添加了路径,就像在 href = “ http://code.google.com/p/simple-build-tool/wiki/libraryManagement”> http://code.google.com/p/simple-build-tool/wiki/librarymanagement 中描述的那样

“ sbt 可以搜索您的本地 Maven 存储库,如果您将其作为存储库添加的话:”

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

这使 sbt 在本地存储库中查找。

Scala 文件是这样的:

import sbt._


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


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


}

(我对 Path.userHome 进行了硬编码,以排除可能的错误原因。

41309 次浏览

You need three slashes after the file: specifier. This is because between the second and third slash, you have an optional hostname. 维基百科 has a good explanation of file: URL's

您遇到了一个问题,因为典型的 "file://"+Path.userHome+"/.m2/repository"模式假设一个 Unix 文件系统,其中路径以 /开始,不包含 :,通常也不包含空格。

若要在 Windows 和 Linux/Unix 上使用非硬编码路径,请使用:

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

为了让它在新版本的 sbt 中起作用,在 build.sbt 中添加以下内容:

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

只需在 build.scala 或 build.sbt 文件中添加这一行

resolvers += Resolver.mavenLocal

当您定义了一个项目时,您需要在设置中包含解析器。不能识别全局解析器。

例如:

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