2016-01-22 245 views
2

在Ubuntu上,gradle這個版本2.10構建失敗與搖籃

我下載elasticsearch並想建立

gradle build 

結果:

A problem occurred configuring root project 'buildSrc'. 
> Could not resolve all dependencies for configuration ':classpath'. 
    > Could not resolve com.bmuschko:gradle-nexus-plugin:2.3.1. 
    Required by: 
     :buildSrc:unspecified 
     > Could not resolve com.bmuschko:gradle-nexus-plugin:2.3.1. 
     > Could not get resource 'https://jcenter.bintray.com/com/bmuschko/gradle-nexus-plugin/2.3.1/gradle-nexus-plugin-2.3.1.pom'. 
      > Could not GET 'https://jcenter.bintray.com/com/bmuschko/gradle-nexus-plugin/2.3.1/gradle-nexus-plugin-2.3.1.pom'. 
       > peer not authenticated 

如果我只是嘗試通過下載這個POM瀏覽器或wget,訪問它沒有問題。

我發現了很多類似的問題/這類錯誤的帖子,但到目前爲止我無法解決這個問題。我需要做些什麼來解決這個問題?

+0

你能告訴你的'構建.gradle'?它看起來像你需要添加憑證到nexus插件庫 – TheoKanning

+0

'build.gradle'從這裏:https://github.com/elastic/elasticsearch/blob/master/build.gradle。這聽起來不對,它需要使用憑據來訪問插件。同樣如上所述'wget'-ing沒有。 – tokosh

+0

你是否在代理之後? – RaGe

回答

1

在我的特定情況下(Ubuntu的)這種錯誤可能是由

sudo update-ca-certificates -f 

可以解決我發現一個不同的問題,這個建議在elastic-discussion-board(感謝文森特)

1

錯誤peer not authenticated意味着https證書驗證失敗。與您的瀏覽器警告您關於證書驗證失敗的方式不同。例如:

enter image description here

這在現實世界中是解釋是:,你從網上下載的依賴本網站的真實性無法驗證,還有就是你可以有下載篡改的可能性或惡意內容。

實際上,雖然您更可能會看到此錯誤,因爲您在一個corp代理後面,喜歡篡改https證書以檢查所有流量。如果您的錯誤是由於corp代理導致的,則解決此問題的正確方法是使用隨JDK分發的keytool實用程序將代理證書導入到您的信任庫中。見herehere

如果它不是由於corp代理,您應該調查證書驗證失敗的原因。也許你的認證機構名單已經過時了。也許有人真的在嘗試Man In The Middle attack。可能您嘗試訪問的網站的證書已過期,並且尚未續訂(很可能不會出現高度可見的公開網站,但可能發生)

解決方法是禁用安全檢查或放棄安全性完全回退到http。要畫出一個愚蠢的比喻,這就像解僱你的保鏢,因爲他們說你不應該進入這個陰暗的外觀區域。但是,我必須承認,在某些情況下這仍然有用。因此,同樣的警告,以上圖像拋出:「你不應該繼續」

幸運的是,jCenter仍然可以通過普通的舊http。在buildSrc/build.gradle變化從

jCenter() 

jcenter { 
    url "http://jcenter.bintray.com/" 
} 

您的存儲庫定義應該主要是在buildScript部分做到這一點就行#25擺脫你的插件下載錯誤,但你應該也使這行#50更改以及代碼依賴關係。

+0

謝謝你的細節。這確實解決了該插件的檢索問題。但它可能是你的建議,同樣的問題再次發生在不同的軟件包上。我必須對此做更多的研究。 – tokosh