gradle - 来自mavenCentral()的Sonatype Nexus Proxy的Idea(通过Gradle) “Could not resolve:”依赖项

标签 gradle intellij-idea nexus sonatype maven-central

我在本地网络上托管了Sonatype Nexus存储库。它有一个Maven组,其中包含用于公共(public)Maven存储库的代理存储库。在过去,这种配置非常出色,我遇到的问题很少。

我最近在Nexus信息库上配置了https和ssl,因为在CI / CD流程中Docker不会轻易登录到不安全的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输出都会显示“无法解析:”。这种行为在我所有的项目中都是一致的(甚至以前可以解决依赖关系的项目)。

在大多数情况下,从命令行的项目:dependencies文件中运行Gradle任务(:idea:buildbuild.gradle)时,我在大多数情况下都能够通过Nexus解决依赖项。结果下载不适用于Idea中的项目。但是,一旦解决了依赖性, Artifact 就会被缓存在Nexus的Maven代理存储库中,从而使Gradle / Idea能够正确解决所有依赖性。

是什么原因导致Gradle / Idea无法通过Nexus的Maven代理解析 Artifact ?有没有办法让Gradle / Idea通过Nexus Maven组/代理正确解决依赖关系?

目前,我只是将mavenCentral()添加到build.gradle的存储库列表中,但我希望以后仅包括Nexus Maven组。缓存1GB / s下载资源非常好。我也想更好地了解Gradle / Idea以及造成此问题的原因。

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

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

    此外,迷信笔记给其他有类似问题的人:

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

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

    关于gradle - 来自mavenCentral()的Sonatype Nexus Proxy的Idea(通过Gradle) “Could not resolve:”依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53358704/

    相关文章:

    java - 使用 requireNonNull() 生成构造函数

    maven-2 - 部署原型(prototype)工件时,Nexus Maven 原型(prototype)存储库未更新

    java - 如何让 Ivy 从 Nexus 仓库下载源代码

    java - 安卓工作室 : Could not get unknown property 'kotlin_version'

    android-studio - Android Studio 下载 gradle 需要永远

    intellij-idea - Intellij12.1.4 和 Tomcat 7 context.xml 问题

    maven - 如何在 Nexus 中重新创建校验和文件?

    java - gradle 与外部项目的循环依赖

    java - 在 libgdx 中部署到 Web 时替换 isInstance() 方法

    java - 如何检查JavaSE商业功能是否启用?