【问题标题】:Gradle build fails because of Nexus returning 400 Bad Request由于 Nexus 返回 400 Bad Request,Gradle 构建失败
【发布时间】:2017-03-16 00:42:45
【问题描述】:

我们有一个公司范围内的 Nexus 3 服务器

  • 托管我们自己的工件并
  • 用作 Maven Central 和其他存储库的代理。

开发人员使用两个存储库:

  • 所有已发布/稳定工件的 maven-releases,带有 version policy“Release”和
  • 具有版本策略“快照”的所有快照工件的 maven-snapshots。

两个存储库都在 Gradle 构建中使用:

repositories {
    maven {
        name "snapshots"
        url "http://nexus3.server:8081/repository/maven-snapshots"
    }

    maven {
        name "releases"
        url "http://nexus3.server:8081/repository/maven-releases"
    }
}

现在,当 Gradle 尝试解决快照依赖关系时,它会询问版本存储库,Nexus 会回答

Error 400 Bad Request
Repository version policy: RELEASE does not allow version: 1.0-SNAPSHOT

构建失败

> Could not resolve group.id:artifact-id:1.0-SNAPSHOT.
 Required by:
     :my-project:unspecified
  > Could not resolve group.id:artifact-id:1.0-SNAPSHOT.
     > Could not get resource 'http://nexus3.server:8081/repository/maven-releases/group/id/artifact-id/1.0-SNAPSHOT/artifact-id-1.0-SNAPSHOT.pom'.
        > Could not GET 'http://nexus3.server:8081/repository/maven-releases/group/id/artifact-id/1.0-SNAPSHOT/artifact-id-1.0-SNAPSHOT.pom'. Received status code 400 from server: Bad Request

我需要如何配置 Gradle 以便忽略此错误并尝试下一个存储库(“快照”)?或者是否可以将 Nexus 配置为返回 404 Not Found 而不是 400 Bad Request?

版本:Gradle 2.9

【问题讨论】:

  • Gradle 按照声明的顺序检查 repos。您的快照依赖项在哪个存储库中?从错误消息来看,gradle 似乎已经尝试了快照存储库,没有找到依赖项,尝试了发布版本,然后失败了。

标签: gradle nexus


【解决方案1】:

查看gradle usageexample projects 的Nexus Repository Manager 3 文档。这应该向您展示如何使用 init.gradle 从存储库组下载。

【讨论】:

    【解决方案2】:

    RaGe 的评论是一个很好的提示:依赖项既不在 snapshots 也不在 releases 中,而是在我不知道的第三个存储库中。将第三个存储库添加到 Gradle 后,依赖关系已解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-16
      • 2020-12-22
      • 1970-01-01
      • 2013-01-29
      • 2017-11-30
      相关资源
      最近更新 更多