sbt找不到Resolver.file()定义的本地存储库

pis*_*hen 6 scala sbt

我用

name := "sbt-publish-test"

version := "0.1-SNAPSHOT"

publishTo := Some(Resolver.file("sbt-repo",  file("/home/pishen/sbt-repo")))
Run Code Online (Sandbox Code Playgroud)

并将sbt publish我的项目发布到目录中.

现在在另一个项目中,我想解决刚刚发布的项目.我用

resolvers += "my-repo" at "file:///home/pishen/sbt-repo"

libraryDependencies += "default" %% "sbt-publish-test" % "0.1-SNAPSHOT"
Run Code Online (Sandbox Code Playgroud)

并且能够毫无错误地解决项目.结果show resolvers是:

> show resolvers 
[info] List(my-repo: file:///home/pishen/sbt-repo)
Run Code Online (Sandbox Code Playgroud)

但是,当我使用时

resolvers += Resolver.file("my-repo", file("/home/pishen/sbt-repo"))

libraryDependencies += "default" %% "sbt-publish-test" % "0.1-SNAPSHOT"
Run Code Online (Sandbox Code Playgroud)

结果show resolvers成为:

> show resolvers
[info] List(FileRepository(my-repo,FileConfiguration(true,None),Patterns(ivyPatterns=List(), artifactPatterns=List(/home/pishen/sbt-repo/[organisation]/[module](_[scalaVersion])(_[sbtVersion])/[revision]/[artifact]-[revision](-[classifier]).[ext]), isMavenCompatible=true, descriptorOptional=false, skipConsistencyCheck=false)))
Run Code Online (Sandbox Code Playgroud)

并且sbt说当我输入时它无法解决依赖sbt update:

[warn]  module not found: default#sbt-publish-test_2.10;0.1-SNAPSHOT
[warn] ==== local: tried
[warn]   /home/pishen/.ivy2/local/default/sbt-publish-test_2.10/0.1-SNAPSHOT/ivys/ivy.xml
[warn] ==== public: tried
[warn]   https://repo1.maven.org/maven2/default/sbt-publish-test_2.10/0.1-SNAPSHOT/sbt-publish-test_2.10-0.1-SNAPSHOT.pom
[warn] ==== my-repo: tried
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: default#sbt-publish-test_2.10;0.1-SNAPSHOT: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
Run Code Online (Sandbox Code Playgroud)

这是一个错误吗?还是我Resolver.file()以错误的方式使用?"name" at "url"和之间有什么区别Resolver.file()?我正在使用sbt 0.13.7.

met*_*sim 1

我的怀疑是,当您Resolver.file在该上下文中使用时,它更像是一个“构建器”创建者,期望后续方法调用填充使用语法时具有不同默认值的其他配置信息"name" at "uri"

sbt ScalaDoc 暗示Resolver.file.apply了以下内容:

使用给定名称构造一个文件解析器。必须使用构造的解析器对象上的ivys或方法显式指定要使用的模式。artifacts

当我完成与您类似的操作时,我从 a 开始File并使用它的 API 将其转换为 URI 形式:

resolvers += "my-repo" at file("/home/pishen/sbt-repo").toURI.toASCIIString
Run Code Online (Sandbox Code Playgroud)