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

时间:2012-05-27 10:39:01

标签: scala maven sbt

我遇到了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 个答案:

答案 0 :(得分:123)

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

即可
resolvers += Resolver.mavenLocal

答案 1 :(得分:57)

file:说明符后需要三个斜杠。这是因为在第二个和第三个斜杠之间,您有一个可选的主机名。 Wikipediafile:网址

有一个很好的解释

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

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

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

答案 2 :(得分:21)

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

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

答案 3 :(得分:3)

当您定义项目时,请注意,您需要在设置中包含解析程序。全局解析器将无法识别。

示例:

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