SBT不使用基于ssh的解析器来解析依赖关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SBT不使用基于ssh的解析器来解析依赖关系相关的知识,希望对你有一定的参考价值。

我在build.sbt中有以下定义:

libraryDependencies += "com.bubblefoundry" %% "something" % "0.1-SNAPSHOT"

resolvers += {
  val privateKeyFile = new java.io.File(sys.env("HOME") + "/.ssh/id_rsa")
  Resolver.ssh("Bubble Foundry", "bubblefoundry.com", "/usr/local/repository/") as ("peter", privateKeyFile) withPermissions("0644")
}

当sbt尝试解析依赖关系时,它会失败:

[info] Resolving com.bubblefoundry#something_2.10;0.1-SNAPSHOT ...
[warn]  module not found: com.bubblefoundry#something_2.10;0.1-SNAPSHOT
[warn] ==== local: tried
[warn]   /Users/peter/.ivy2/local/com.bubblefoundry/something_2.10/0.1-SNAPSHOT/ivys/ivy.xml
[warn] ==== Bubble Foundry: tried
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/com.bubblefoundry/something_2.10/0.1-SNAPSHOT/something_2.10-0.1-SNAPSHOT.pom
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: com.bubblefoundry#something_2.10;0.1-SNAPSHOT: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::

它似乎甚至没有连接到服务器来查找依赖项。这是为什么?难道我做错了什么?

依赖关系已经发布(使用相同的解析器定义)到/usr/local/repository/com/bubblefoundry/...

答案

更新到sbt 0.13之后,我可以通过将以下行添加到build.sbt来使用我的私人仓库

resolvers += Resolver.ssh("Company Maven Repo", "git@github.com:company/company-repo.git", "/raw/master")

弹出一个对话框,询问我的github用户名和密码


这是一个错误!

例如,我使用github来托管通过SSH访问的私有/内部maven仓库。当您使用Maven / POM文件时,我可以毫无困难地提取工件。

但是不能让SBT(0.12.2)起作用。最令人沮丧的是它只是说

== REPO_NAME: tried

即使我指定了无效的身份验证或提供了错误的ssh url,它也会做同样的事情,即没有错误报告。

花了几个小时研究和尝试组合无济于事。因此我建议SSH repos不能正常工作。

另一答案

我找到了一个解决方案:从ssh切换到sftp

resolvers += {
  val privateKeyFile = new java.io.File(sys.env("HOME") + "/.ssh/id_rsa")
  Resolver.sftp("Bubble Foundry", "bubblefoundry.com", "/usr/local/repository/") as ("peter", privateKeyFile)
}

以上是关于SBT不使用基于ssh的解析器来解析依赖关系的主要内容,如果未能解决你的问题,请参考以下文章

如何解决具有不同包装常春藤类型的sbt中的依赖关系?

sbt/ivy 无法解析通配符 ivy 对文件系统解析器的依赖

IntelliJ 中 SBT 项目的未解析依赖路径

SBT SFTP 解析器不够努力

sbt找不到ebean依赖项(一些未解析的依赖项有额外的属性)

从`sbt compile`中排除测试依赖解析