2016-01-22 184 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