我用
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.
我的怀疑是,当您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)