【发布时间】:2017-03-06 14:45:05
【问题描述】:
我正在尝试在公司防火墙后面运行 SBT。另一个团队配置了 Artifactory 代理。这个代理在开启匿名访问的情况下可以正常工作,但是当我们让它需要密码时就会开始出错。
当我在我的工作站上运行 SBT 时,我收到以下错误:
[error] Unable to find credentials for [Artifactory Realm @ coderepo.xxx.amrs.bigco.com]
这样做的结果是我无法引导 sbt:
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: UNRESOLVED DEPENDENCIES ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: org.scala-lang#scala-library;2.10.6: not found
[warn] :: org.scala-sbt#sbt;0.13.12: not found
[warn] :: org.scala-lang#scala-compiler;2.10.6: not found
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
我尝试将 .credentials 文件放入 ~/.sbt 和 ~/.ivy2:我一直在测试以下变体,所有这些都不起作用:
realm=Artifactory Realm @ coderepo.xxx.amrs.bigco.com
host=coderepo.xxx.amrs.bigco.com
user=<username>
password=<pwd>
我猜这个错误意味着它无法找到与领域匹配的凭据定义,所以我在两个位置尝试了第一行的多个版本:
realm=Artifactory Realm
realm=[Artifactory Realm @ coderepo.xxx.amrs.bigco.com]
realm=coderepo.xxx.amrs.bigco.com
这些似乎都没有任何影响。
那么,允许 SBT 使用用户名和密码对受密码保护的 Artifactory 存储库进行身份验证的正确方法是什么?
UPDATE0:根据 Ivy 文档,最有可能的领域名称就是“Artifactory Realm”。根据 SBT 文档,凭据文件的正确默认位置应该是 %USERPROFILE%/.sbt/.credentials(是的,我使用的是 Windows)。即使删除了我的 .ivy2 目录中的 .credentials 文件,它仍然无法正常工作。
UPDATE1:相关但实际上没有帮助:
UPDATE2:我开始怀疑这是 sbt 中的错误 - 我在这里添加了一个问题:https://github.com/sbt/sbt/issues/2817
【问题讨论】:
标签: scala sbt artifactory