我用
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。
答案 0 :(得分:1)
我怀疑当你在这种背景下使用Resolver.file
时,它更多的是建筑师"创建者,期望后续方法调用在使用"name" at "uri"
语法时填写具有不同默认值的其他配置信息。
sbt ScalaDoc for Resolver.file.apply
提到了以下内容:
构造具有给定名称的文件解析程序。必须使用构造的解析程序对象上的
ivys
或artifacts
方法显式指定要使用的模式。
当我做了类似于您正在做的事情时,我从File
开始并使用其API将其转换为URI格式:
resolvers += "my-repo" at file("/home/pishen/sbt-repo").toURI.toASCIIString