2014-03-03 93 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設置,以避免衝突。

相關問題