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

时间:2015-03-01 14:19:26

标签: scala sbt

我用

name := "sbt-publish-test"

version := "0.1-SNAPSHOT"

publishTo := Some(Resolver.file("sbt-repo",  file("/home/pishen/sbt-repo")))

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

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

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

libraryDependencies += "default" %% "sbt-publish-test" % "0.1-SNAPSHOT"

并且能够无任何错误地解决项目。 show resolvers的结果是:

> show resolvers 
[info] List(my-repo: file:///home/pishen/sbt-repo)

但是,当我使用

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

libraryDependencies += "default" %% "sbt-publish-test" % "0.1-SNAPSHOT"

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)))

并且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]  ::::::::::::::::::::::::::::::::::::::::::::::

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

1 个答案:

答案 0 :(得分:1)

我怀疑当你在这种背景下使用Resolver.file时,它更多的是建筑师"创建者,期望后续方法调用在使用"name" at "uri"语法时填写具有不同默认值的其他配置信息。

sbt ScalaDoc for Resolver.file.apply提到了以下内容:

  

构造具有给定名称的文件解析程序。必须使用构造的解析程序对象上的ivysartifacts方法显式指定要使用的模式。

当我做了类似于您正在做的事情时,我从File开始并使用其API将其转换为URI格式:

resolvers += "my-repo" at file("/home/pishen/sbt-repo").toURI.toASCIIString