2014-03-03 95 views
2

我有一个多模块SBT项目,我试图发布到一个远程的Apache Archiva。发布到Apache Archiva服务器拒绝SBT未经授权?

[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设置凭据?

回答

3

在这一问题的评论使我的答案: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 
+0

真棒!很高兴你走上了正轨。 – joescii

1

我在工作中通过sbt发布到archiva没有问题。我记得有一个类似的令人沮丧的问题,那是因为我的领域错了。假设你有这个正确的,我唯一看到的不同是我在~/.sbt/0.13/plugins/credentials.sbt中指定我的凭证。创建这样的文件,添加以下内容:

credentials ++= Seq(
    Credentials("Repository Archiva Managed development Repository", 
       "XX.XX.XX.XX", 
       myuser, 
       mypassword) 
) 

您可能需要删除当前credentials设置,以避免冲突。

相关问题