想法(通过Gradle)“无法解决:”来自mavenCentral()的Sonatype Nexus代理的依赖项

时间:2018-11-18 07:19:02

标签: gradle intellij-idea nexus sonatype maven-central

我在本地网络上托管了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以及造成此问题的原因。

更多信息:

    在尝试解决此问题的过程中,
  • Intellij Idea已reinstalled到版本build.gradle。旧版本已不复存在。
  • Gradle已更新为版本2018.2.6 Build #IC-182.5107.16。以前的版本是4.10.2
  • 我已经通过4.5.1打印了每个nexus*变量,以确保值正确。
  • 没有配置Gradle的Idea设置(本地Gradle分发,默认Gradle包装器,Gradle'wrapper'任务配置)来解决依赖关系。
  • Every configuration of deleting at least one of println./.idea./.gradle
  • 想法不在offline-mode中。切换离线模式和“刷新所有Gradle项目”的顺序并没有改变结果。
  • 我已经用~/.gradle/caches运行了Gradle的dependencies任务的Idea配置,并将日志与命令行上--warning-mode all --debug的输出进行了比较。在“想法”输出中出现“无法解决:”消息之前,日志似乎正在产生相同的语句(顺序完全不同)。我没有找到附近的任何错误消息来解释该失败。如果可以帮助诊断问题,我可以上传这些文件。
  • 我尝试将存储库设置为直接指向Nexus Maven代理而不是Maven组。这不允许Gradle / Idea解决依赖关系。
  • 我应该为Gradle使用http/https proxy吗?我不了解在这种情况下使用代理的目的。
  • 我还没有done anything with Grail。我不知道Grail是什么,并且怀疑我目前不需要它。
  • 操作系统是Windows 10。
  • gradle dependencies --warning-mode all --debug中使用compileimplementation时,无法解决依赖关系。
  • Transitive dependencies不要似乎相关。

1 个答案:

答案 0 :(得分:1)

我一定没有将证书添加到正确的jre安装中。我是最近才添加的,此问题已解决。

此外,迷信笔记给任何其他遇到类似问题的人

  • 我在别名下添加了证书(通配符证书)(使用keytool的-alias命令行参数):*.example.com
  • 我还将其添加为完整地址的别名:nexus.example.com

我不知道这两个因素是否对Idea / Gradles解决工件的成功有任何影响。我相信在添加第二个别名之前它是可行的。