Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 通过SSH密钥身份验证发布SBT无效_Scala_Maven_Jvm_Sbt_Xsbt - Fatal编程技术网

Scala 通过SSH密钥身份验证发布SBT无效

Scala 通过SSH密钥身份验证发布SBT无效,scala,maven,jvm,sbt,xsbt,Scala,Maven,Jvm,Sbt,Xsbt,我的问题是:为什么我不能通过SSH从SBT发布到我的服务器 背景: 我正在开发一个scala库,我想通过SSH(使用SFTP解析器)将它发布到一个带有SBT v0.12.3的远程存储库中。my project/Build.scala SBT设置文件的相关部分按照以下规定进行配置: 它失败,因为没有X11显示。这是意外的行为,因为SBT项目配置被设置为使用私钥身份验证(请参见上面的解析程序) 到目前为止,我能想到问题的两个可能原因,详情如下 可能原因#1:SBT配置错误 我的上述配置有问题吗? 可

我的问题是:为什么我不能通过SSH从SBT发布到我的服务器

背景: 我正在开发一个scala库,我想通过SSH(使用SFTP解析器)将它发布到一个带有SBT v0.12.3的远程存储库中。my project/Build.scala SBT设置文件的相关部分按照以下规定进行配置:

它失败,因为没有X11显示。这是意外的行为,因为SBT项目配置被设置为使用私钥身份验证(请参见上面的
解析程序

到目前为止,我能想到问题的两个可能原因,详情如下

可能原因#1:SBT配置错误 我的上述配置有问题吗?

可能原因#2:从旧版本中碰到常春藤臭虫 在撰写本文时,我正在使用最新的SBT 0.12.3。也许SBT使用的常春藤版本很旧。我想得越多,这种可能性就越小,但我还不能排除这种可能性

我怎样才能知道Ivy SBT使用的是什么版本?

然后

如果是旧的,有没有办法让SBT使用更新版本的常春藤?

还有另一个相关的问题,请参阅,它引用了[0]一个导致
java.awt.HeadlessExceptions

[0]

  • “您使用的是哪个版本的Ivy?版本2.0中有一个Jira错误:现在应该修复它。”

  • “似乎如果我升级到ivy 2.3 rc-2。SSH发布工作正常。”


这可能毕竟是一个与常春藤版本相关的bug。我使用的是SBT 0.12.2,AFAIK使用的是Ivy 2.0。我正在查看Ivy缓存,它位于
~/.ivy2/cache/
,Ivy在其中为它已解决的依赖项创建了一组XML日志文件,我可以在生成的每个XML文件中看到Ivy
模块版本2.0

我不知道如何更新SBT使用的常春藤版本,但根据默认的SBT文档判断,一个可能的解决方案是手动升级常春藤,并确保默认的机器范围路径指向正确的常春藤版本

然后运行
sbt clean
sbt update
重新获取依赖项,并允许Ivy为新的Ivy版本重新生成XML配置文件等。有关SBT依赖关系管理的更多信息:

常春藤主目录

默认情况下,sbt使用标准的常春藤主目录位置 ${user.home}/.ivy2/。这可以在机器范围内进行配置,以供用户使用 通过设置系统属性,sbt启动器和by项目 sbt启动脚本中的sbt.ivy.home(在设置中介绍)

例如:

java -Dsbt.ivy.home=/tmp/.ivy2/ ...
更新


通过检查SBT Scala源代码的最新版本,再次确认版本问题。甚至SBT0.13似乎也在使用常春藤2.0.0版,而不是2.3版。请查看SBT源代码,特别是文件的最后几行。

完整的堆栈跟踪可能对诊断此问题有很大帮助。你能抓住它吗
堆栈跟踪被抑制:最后运行*:发布完整输出
给你足够的信息来恢复它吗?我通过删除我的~/.ivy2目录并运行
sbt clean
复制了你的观察结果。这显示了
org.apache.ivy#ivy;2.2.0!当ivy.jar(542ms)
抓住ivy库时。无论如何,我将把它作为一个bug提交给SBT项目。谢谢你的帮助alex23。我按照你说的做了覆盖,并将所有ivy-2.3重命名为ivy-2.2,但我仍然看到
将ivy文件传递给/Users/me/my lib/target/scala-2.10.1/ivy-2.1.22-SNAPSHOT.xml,当我运行
sbt publish
时,它仍然提示我输入用户名/密码。
> sbt-version
[info] 0.12.3

> publish
[info] Packaging /home/me/my-lib/target/scala-2.10.1/my-lib_2.10.1-SNAPSHOT-sources.jar ...
[info] Done packaging.
[info] Wrote /home/me/my-lib/target/scala-2.10.1/my-lib_2.10.1-SNAPSHOT.pom
[info] :: delivering :: org.example#my-lib_2.10.1;SNAPSHOT :: SNAPSHOT :: release :: Sun Apr 21 12:48:59 PDT 2013
[info]  delivering ivy file to /home/me/my-lib/target/scala-2.10.1/ivy-SNAPSHOT.xml
[info] Generating API documentation for main sources...
model contains 75 documentable templates
[info] API documentation generation successful.
[info] Packaging /home/me/my-lib/target/scala-2.10.1/my-lib_2.10.1-SNAPSHOT-javadoc.jar ...
[info] Done packaging.
[info] Packaging my-lib-SNAPSHOT.jar ...
[info] Done packaging.
[trace] Stack trace suppressed: run last *:publish for the full output.
[error] (*:publish) java.awt.HeadlessException:
[error] No X11 DISPLAY variable was set, but this program performed an operation which requires it.
[error] Total time: 35 s, completed Apr 21, 2013 12:49:33 PM
java -Dsbt.ivy.home=/tmp/.ivy2/ ...