76

我在本地存储库中遇到了 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

编辑:我在项目/构建中使用 scala 文件添加了路径,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 以排除可能的错误原因。正如预期的那样,它没有改变任何东西)。

4

4 回答 4

150

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

resolvers += Resolver.mavenLocal
于 2014-02-07T13:21:27.900 回答
65

说明符后需要三个斜杠file:。这是因为在第二个和第三个斜杠之间,您有一个可选的主机名。维基百科file:对URL有很好的解释

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

要获得适用于 Windows 和 Linux/Unix 的非硬编码路径,请使用:

"Local Maven" at Path.userHome.asFile.toURI.toURL + ".m2/repository"
于 2012-05-28T00:09:52.553 回答
21

要使其适用于较新版本的 sbt,请将以下内容添加到 build.sbt:

resolvers += "Local Maven Repository" at "file:///"+Path.userHome+"/.m2/repository"
于 2013-01-23T16:09:00.780 回答
3

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

例子:

lazy val core = (project in file("core")).
  settings(commonSettings: _*).
  settings(
    resolvers += Resolver.mavenLocal,
    name := "Core",
    libraryDependencies := coreDependencies
  )
于 2016-10-03T14:47:15.923 回答