2014-01-06 83 views
4

錯誤消息:SBT:不能發佈到Apache Archiva

java.io.IOException: Access to URL 
    http://maven.company.com/repository/internal/com/company/ 
    project_2.10/0.0.3/project_2.10-0.0.3.pom was 
    refused by the server: Unauthorized 

運行的Apache Archiva 1.4-M4(最新的),我能夠通過Web界面上傳,但不是通過SBT。

在SBT使用這些設置:

publishTo := Some("company releases" at "http://maven.company.com/repository/internal"), 
    credentials += Credentials(
    "company Maven Repository", 
      "maven.company.com", 
      "username", 
      "password" 
     ), 
    publishMavenStyle := true, 
    publishArtifact in Test := false, 
    pomIncludeRepository := { _ => true }, 
    // .. some xml with author details 
} 

的所有詳細信息,包括用戶名,密碼和網址是否正確。

+0

在關於AuthZ的archiva.log文件中的任何日誌?你能夠在sbt工具中添加一些調試以確保用戶/密碼正在轉發嗎? –

回答

5

安全領域對常春藤很重要。這就像唯一的依賴管理器,需要你使用有效的安全領域。我相信對於apache archiva它是「Repository Archiva Managed」。您可以通過嘗試對Archiva執行您自己的HTTP請求進行檢查,並查看它告訴您它支持的Realms。

這裏的代碼,它試圖檢測安全領域:https://github.com/sbt/sbt-pom-reader/blob/2b515b58739ef7bdfad8f98248e901db8e140892/src/main/scala/com/typesafe/sbt/pom/MavenHelper.scala#L212-L221

更新: 境界的樣子:「庫Archiva管理的內部系統信息庫」。如果您發佈到其他倉庫,請將「內部」替換爲倉庫的名稱。

一旦你確定了安全領域,你要按照以下步驟更新您的構建:

credentials += Credentials(
     "Repository Archiva Managed internal Repository", // Or whatever you detect as the security realm 
     "maven.company.com", 
     "username", 
     "password" 
    ), 
+0

隨時。這是試圖發佈時最常見的錯誤,但是爲了改進錯誤信息而陷入常春藤就像是不可能的(靜態方法),否則我會試圖修補它。 – jsuereth