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

标签 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。

最佳答案

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

sbt ScalaDoc for Resolver.file.apply 暗指这些方面的事情:

Constructs a file resolver with the given name. The patterns to use must be explicitly specified using the ivys or artifacts methods on the constructed resolver object.



当我做了类似于你正在做的事情时,我从 File 开始并使用其 API 将其转换为 URI 形式:
resolvers += "my-repo" at file("/home/pishen/sbt-repo").toURI.toASCIIString

关于scala - sbt 找不到由 Resolver.file() 定义的本地存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28794563/

相关文章:

scala - 使用 yarn 上 spark-submit 的 --archives 选项上传 zip 文件

java - 没有maven的eclipse中java + scala + lift项目的环境

git - 使用 sbt-git 构建包导致 "SNAPSHOT-SNAPSHOT"版本限定符

sbt - 如何抑制 sbt [1.0.0,1.0.4] 中的信息消息?

java - 我们如何从数据帧在 scala 中创建嵌套数组?

Scala Map.mapValues stackoverflowerror

婚礼阅读中的Scala引用

scala - 如何在 0.13 中声明任务对任务的依赖?

Apache Commons 的 sbt 配置

scala - 创建 rx Observable 后添加元素