我有一个多模块SBT项目,我试图发布到远程Apache Archiva。
[error] (core/*:publish) java.io.IOException: Access to URL http://XX.XX.XX.XX/repository/development/com/example/core_2.10/1.0.0.SNAPSHOT.304fcd73d72ffe4a05271197902c36b9a59b4922/core_2.10-1.0.0.SNAPSHOT.304fcd73d72ffe4a05271197902c36b9a59b4922.pom was refused by the server: Unauthorized
对于我的快照,我为提交添加了Git SHA-1哈希。
Build.scala
publishMavenStyle := true,
publishArtifact in Test := false,
pomIncludeRepository := { _ => true },
publishTo := Some("development" at "http://XX.XX.XX.X/repository/development"),
credentials += Credentials(Path.userHome / ".ivy2" / ".credentials_development"), // archiva credentials by repo
我注意按照我读过的帖子正确设置领域。我通过这样做检索它:
curl -X POST http://xx.xx.xx.xx/repository/development -v > /dev/null
.credentials_development
realm=Repository Archiva Managed development Repository
host=XX.XX.XX.XX
user=myuser
password=mypassword
在SBT,我跑:
compile
assembly
make-pom
package
publish
我可以通过网络管理使用用户上传工件。
我应该怎么做才能使出版有效?我是否需要通过ivysettings.xml
设置凭据?
答案 0 :(得分:4)
这个问题的评论让我得到答案:sbt: publish to corporate Nexus repository unauthorized
在凭证文件中的主机名上不能包含端口(我的Archiva服务器在端口8080上运行)。 它会阻止您的凭据在发布。
我还在我的publishTo中指定了域,并根据barnesjd的注释将我的凭据文件移动到〜/ .sbt(虽然不是插件,只是在〜。/ sbt中)。
供其他人参考,这是我的配置:
<强> Build.scala 强>
publishTo := Some("Repository Archiva Managed development Repository" at "http://XX.XX.XX.XX:8080/respository/development/"),
credentials += Credentials(Path.userHome / ".sbt" / ".archiva_credentials")
<强> .archiva_credentials 强>
realm=Repository Archiva Managed development Repository
host=XX.XX.XX.XX
user=myuser
password=mypassword
答案 1 :(得分:1)
我在工作中通过sbt发布到archiva没有问题。我记得有一个类似的令人沮丧的问题,这是因为我有错误的领域。假设你有正确的,我唯一看到的不同是我在~/.sbt/0.13/plugins/credentials.sbt
中指定我的凭据。创建这样的文件,添加以下内容:
credentials ++= Seq(
Credentials("Repository Archiva Managed development Repository",
"XX.XX.XX.XX",
myuser,
mypassword)
)
您可能需要删除当前的credentials
设置以避免冲突。