我在本地网络上托管了Sonatype Nexus存储库。它具有一个Maven组,其中包含用于公共Maven存储库的代理存储库。过去,这种配置非常出色,我遇到的问题很少。
我最近在Nexus信息库上配置了https和ssl,因为Docker在CI / CD流程中不会轻易登录到不安全的Nexus Docker注册表中。最后,我确实重新配置了Maven存储库。
然后我更新了build.gradle
:
repositories {
maven {
credentials {
username "${nexusUsername}"
password "${nexusPassword}"
}
name = 'RepositoryName'
url = "https://${nexusURL}:${nexusPort}/repository/maven-public"
}
}
具有在nexus*
中定义的~/.gradle/gradle.properties
变量:
nexus<Variable>=<value>
我已经还使用keytool将适当的证书添加到了java jre密钥库中,并且在Idea的设置(File > Settings... : Tools > Server Certificates
)中添加了该证书。
当尝试使用Gradle(通过在Intellij Idea的弹出通知中单击“导入更改”)(通过Maven代理)下载依赖项时,对于每个依赖项,Build输出都会显示“无法解析:
在大多数情况下,我从项目的{{1}运行Gradle任务(:dependencies
,:idea
,:build
时,可以通过Nexus解析依赖关系}}文件从命令行。结果下载不适用于Idea中的项目。但是,一旦解决依赖关系,工件就会缓存在Nexus的Maven代理存储库中,从而使Gradle / Idea能够正确解决所有依赖关系。
是什么原因导致Gradle / Idea无法通过Nexus的Maven代理解析工件?是否有办法让Gradle / Idea通过Nexus Maven组/代理正确解决依赖关系?
目前,我刚刚将build.gradle
添加到了mavenCentral()
的存储库列表中,但我希望以后只包括Nexus Maven组。缓存1GB / s下载资源非常好。我还想更好地了解Gradle / Idea以及造成此问题的原因。
更多信息:
build.gradle
。旧版本已不复存在。2018.2.6 Build #IC-182.5107.16
。以前的版本是4.10.2
。4.5.1
打印了每个nexus*
变量,以确保值正确。println
,./.idea
和./.gradle
。~/.gradle/caches
运行了Gradle的dependencies
任务的Idea配置,并将日志与命令行上--warning-mode all --debug
的输出进行了比较。在“想法”输出中出现“无法解决:”消息之前,日志似乎正在产生相同的语句(顺序完全不同)。我没有找到附近的任何错误消息来解释该失败。如果可以帮助诊断问题,我可以上传这些文件。gradle dependencies --warning-mode all --debug
中使用compile
或implementation
时,无法解决依赖关系。答案 0 :(得分:1)
我一定没有将证书添加到正确的jre安装中。我是最近才添加的,此问题已解决。
此外,迷信笔记给任何其他遇到类似问题的人
keytool
的-alias命令行参数):*.example.com
nexus.example.com
我不知道这两个因素是否对Idea / Gradles解决工件的成功有任何影响。我相信在添加第二个别名之前它是可行的。