SBT SFTP 解析器不够努力
Posted
技术标签:
【中文标题】SBT SFTP 解析器不够努力【英文标题】:SBT SFTP resolver not trying hard enough 【发布时间】:2015-02-16 12:39:28 【问题描述】:我正在将我们的混合构建环境转换为基于 sbt 的生态系统。我在这个问题上有点障碍。
我已经通过 sftp 将一个库部署到远程存储库,但是当我尝试将其作为依赖项加载时,我遇到了问题。
在 build.sbt 我有:
resolvers +=
val privateKeyFile = new java.io.File(sys.env("HOME") + "/.ssh/id_rsa")
Resolver.sftp("MY REPO", "aHost", "/repoBase/") as ("aUser", privateKeyFile)
互动节目更新:
[info] Resolving com.test.it.out#myLib_2.11;1.0 ...
[warn] module not found: com.test.it.out#myLib_2.11;1.0
[warn] ==== local: tried
[warn] /home/bday/.ivy2/local/com.test.it.out#myLib_2.11/1.0/ivys/ivy.xml
[warn] ==== public: tried
[warn] https://repo1.maven.org/maven2/com.test.it.out#myLib_2.11/1.0/jsshfs_2.11-1.0.pom
[warn] ==== MY REPO: tried
[info] Resolving jline#jline;2.12 ...
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: UNRESOLVED DEPENDENCIES ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
它从不列出 MY REPO 的任何路径信息。
我尝试了多种方法来配置解析器,即使是应该失败并且结果不会改变的用户/主机。
显示解析器 [信息] List(SftpRepository(MY REPO,SshConnection(Some(KeyFileAuthentication(aUser,/home/aUser/.ssh/id_rsa,None)),Some(aHost),None),Patterns(ivyPatterns=List(), artifactPatterns= List(/repoBase/[organisation]/module(_[sbtVersion])/[revision]/[artifact]-revision.[ext]), isMavenCompatible=true, descriptorOptional=false, skipConsistencyCheck=false)))
我确实看到有人遇到同样的问题,并说从 SSH 切换到 SFTP 解决了它,在 12.?。我正在使用 13.7
我在这方面已经走到了互联网的尽头,请扩展一下。
谢谢!
【问题讨论】:
我可以在库项目中以同样的方式定义解析器并发布到它,所以我想它没有真正的问题。 这是一个愚蠢的解决方法! 使用 ssshfs 挂载远程仓库:/MY_REMOTE_REPO (我猜这些是一个衬里)解析器 += "My REPO via sshfs" at "file:///MY_REMOTE_REPO" 太糟糕了,我必须为每个人设置它。不会长期削减它 【参考方案1】:我遇到了类似的问题,它没有列出它尝试过的任何网址。我添加了发布时使用的 Pattern
,它解决了问题。另外,我已将我的解析器放在顺序中的第一个。
resolvers in ThisBuild := (Resolver.sftp("MY Repo", "example.com", 22, "sbt-repos/releases")(Patterns("[organisation]/[module](_[scalaVersion])(_[sbtVersion])/[revision]/[type]s/[artifact](-[classifier]).[ext]"))) +: resolvers.value
我正在使用0.13.9
。我为此搜索了很多,经过这么多试验终于弄明白了。希望这会对某人有所帮助。
【讨论】:
有一天我将不得不再次尝试这个。我刚刚通过使用 rsync 将存储库同步回本地来解决它。【参考方案2】:val sftpRes =
val privateKeyFile = new java.io.File(sys.env("HOME") + "/.ssh/id_rsa")
Resolver.sftp("REPO", "gitHost", "/path/to/data/")(Resolver.ivyStylePatterns) as ("user", privateKeyFile)
publishMavenStyle := false
publishTo := Some(sftpRes)
使用 SBT 1.2.4
最后,这就是我要做的工作。我尝试了 Resolver.mavenStylePatterns,但在这种情况下,与其他 SBT 一样,SBT 从未真正尝试在解析器上查找文件。
在发布和解析中使用 Ivy 模式对我有用。
【讨论】:
以上是关于SBT SFTP 解析器不够努力的主要内容,如果未能解决你的问题,请参考以下文章
sbt/ivy 无法解析通配符 ivy 对文件系统解析器的依赖