SBT在发布到Artifactory时未传递凭据

SBT在发布到Artifactory时未传递凭据,sbt,artifactory,Sbt,Artifactory,我正在编写一个Java项目,并使用SBT自动化构建和发布到JFrog Artifactory 每当需要发布到Artifactory时,我都希望使用Ivy目录布局来完成这项工作,并且显然要将IvyXML文件与jar一起发布。我通过在build.sbt文件中使用以下行实现了这一点: crossPaths := false publishTo := Some("Artifactory Realm" at "http://<Artifactory IP>:<Artifactory Po

我正在编写一个Java项目,并使用SBT自动化构建和发布到JFrog Artifactory

每当需要发布到Artifactory时,我都希望使用Ivy目录布局来完成这项工作,并且显然要将IvyXML文件与jar一起发布。我通过在build.sbt文件中使用以下行实现了这一点:

crossPaths := false
publishTo := Some("Artifactory Realm" at "http://<Artifactory IP>:<Artifactory Port>/artifactory/org.project.my")
credentials += Credentials(Path.userHome / ".ivy2" / ".credentials")
publishMavenStyle := false
但是,如果我更改Artifactory配置以防止匿名用户部署新的工件,当我运行“sbt publish”时,我会得到以下输出:

[error] Unable to find credentials for [Artifactory Realm @ <Artifactory IP>].
java.io.IOException: Access to URL http://<Artifactory IP>:<Artifactory Port>/artifactory//org.project.my/org/project/my/project-my/1.0.0/project-my-1.0.0.jar was refused by the server: Unauthorized
我还尝试手动传递凭据,而不是使用文件:

credentials += Credentials("Artifactory Realm", "localhost", "<USERNAME>", "<PASS>")
credentials+=credentials(“人工领域”、“本地主机”、“虚拟主机”、“虚拟主机”)
但我得到了同样的结果

知道我可能遗漏了什么吗?

试试:

host=<Artifactory IP>
主机=
旧答案(不起作用):

host=:

我遇到了一个不同的问题:我在
.credentials
文件中设置了错误的

通过查看
sbt
的错误输出,我发现我应该使用:

realm=Artifactory Realm
错误显示
领域
主机
的预期值:

[error] Unable to find credentials for [Artifactory Realm @ myhost].

谢谢你,艾德!你的答案很接近答案!它通过执行host=(不带端口)工作。请编辑您的答案,我会将其标记为我的问题的答案。好的,请为阅读者提供一个摘要:您不需要指定端口,也不需要使用“http”或“https”,甚至不需要在.credentials文件中添加项目的路径。只需添加主机名/IP。是的,我的领域设置为realm=“artifactoryrealm”,并加上引号,但不起作用
host=<Artifactory IP>:<Artifactory port>
realm=Artifactory Realm
[error] Unable to find credentials for [Artifactory Realm @ myhost].