正在将 Gradle 5.3.1 升级到 6.5。旧版本下载依赖正常,但在 6.5 上失败

Upgrading Gradle 5.3.1 to 6.5. Older version downloaded dependency OK, but fails on 6.5

我已将我的问题缩减为一个非常简单的项目,该项目声明了对从我的客户的工件实例提供的模块工件的模块依赖性。 这适用于 5.3.1。从下面的日志中可以看出,有一行表明 DefaultExternalResourceArtifactResolver 正在加载相关的 .jar 用于我的 maven2 存储库中的此依赖项(请参阅:{{{ A }}})

但是,当我尝试升级到 Gradle 6.5 时,我收到消息

org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Detected non-existence of module 'com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT' in resolver cache 'maven2'

(参见{{{ B }}})。

我是一个 Gradle 轻量级的人,无法开始深入研究源代码。我希望有人能给我一些提示,说明这个问题可能是什么原因造成的。

以下是构建文件(为客户匿名而编辑):

根项目build.gradle

plugins {
  id 'java'
}


subprojects {
  apply plugin: 'java'

  repositories {
    ['animals'].each { repo ->
      maven {
        name repo
        url "${urlDefinedInGradleProperties}/${repo}"
        credentials {
          username = 'mouse'
          password = 'mouse.mouse'
        }
      }
    }
  }
}

子项目build.gradle

dependencies {
  testCompile group: 'com.mouse.ap.data.qe', name: 'lib-reptile-generator', version: '0.1-806-SNAPSHOT'
}

日志如下所示。 提前致谢 ! /克里斯

Gradle 5.3.1 selected log statements:   No issue downloaded dependency with older version.

22:48:01.145 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT using repositories [maven, maven2, MavenLocal, maven3, iad-lib, toro-ext, iad-lib-ext, gradle-plugins]
22:48:01.146 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Detected non-existence of module 'com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT' in resolver cache 'maven'
22:48:01.146 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found cached version of changing module 'com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT' in 'maven2'
22:48:01.146 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Using cached module metadata for module 'com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT' in 'maven2'
22:48:01.146 [DEBUG] [org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver] Loading file:/Users/christopher.bedford/.m2/repository/com/mouse/ap/data/qe/lib-reptile-generator/0.1-806-SNAPSHOT/lib-reptile-generator-0.1-806-SNAPSHOT.pom    {{{ A }}}
22:48:01.146 [DEBUG] [org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver] Loading file:/Users/christopher.bedford/.m2/repository/com/mouse/ap/data/qe/lib-reptile-generator/0.1-806-SNAPSHOT/lib-reptile-generator-0.1-806-SNAPSHOT.jar
        ...
22:48:01.146 [DEBUG] [org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver] No meta-data file or artifact found for module 'com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT' in repository 'MavenLocal'.
22:48:01.146 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.modulecache.PersistentModuleMetadataCache] Recording absence of module descriptor in cache: com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT [changing = false]
22:48:01.147 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Detected non-existence of module 'com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT' in resolver cache 'maven3'
22:48:01.147 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Detected non-existence of module 'com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT' in resolver cache 'foo-repo-lib'
22:48:01.148 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found cached version of changing module 'com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT' in 'bar-repo-ext'
22:48:01.148 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Using cached module metadata for module 'com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT' in 'bar-repo-ext'
22:48:01.148 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Detected non-existence of module 'com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT' in resolver cache 'foo-rep-lib-ext'
22:48:01.148 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Detected non-existence of module 'com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT' in resolver cache 'gradle-plugins'
        ...
22:48:01.148 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Using com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT from Maven repository 'maven2'
        ...
22:48:01.149 [DEBUG] [org.gradle.internal.component.model.ComponentAttributeMatcher] Selected matches [com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT configuration compile] from candidates [com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT configuration compile, com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT configuration runtime, com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT configuration platform-compile, com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT configuration platform-runtime, com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT configuration enforced-platform-compile, com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT configuration enforced-platform-runtime] for {org.gradle.dependency.bundling=external, org.gradle.jvm.version=8, org.gradle.usage=java-api}
        ...
22:48:01.149 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.DependencyGraphBuilder] Visiting configuration com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT(compile).
        ...
22:48:01.150 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationExecutor] Completing Build operation 'Resolve dependencies of :lib-aci-kafka:testCompileClasspath'
22:48:01.150 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationExecutor] Build operation 'Resolve dependencies of :lib-aci-kafka:testCompileClasspath' completed
        ...
22:48:01.150 [DEBUG] [org.gradle.internal.component.model.ComponentAttributeMatcher] Selected match com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT configuration compile from candidates [com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT configuration compile] for {org.gradle.dependency.bundling=external, org.gradle.jvm.version=8, org.gradle.usage=java-api}
        ...
22:48:01.151 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationExecutor] Build operation 'Resolve lib-reptile-generator.jar (com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT)' started
22:48:01.151 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found artifact 'lib-reptile-generator.jar (com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT)' in resolver cache: /Users/christopher.bedford/.gradle/caches/modules-2/files-2.1/com.mouse.ap.data.qe/lib-reptile-generator/0.1-806-SNAPSHOT/68ee2c19e31d164860a270837701cf49e6a76168/lib-reptile-generator-0.1-806-SNAPSHOT.jar
        ...
22:48:01.151 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationExecutor] Completing Build operation 'Resolve lib-reptile-generator.jar (com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT)'
22:48:01.151 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationExecutor] Build operation 'Resolve lib-reptile-generator.jar (com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT)' completed





Gradle 6.5 selected log statements:   Unable to download dependency with latest version.

2020-06-14T22:58:15.997-0700 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.NodeState] dependency: com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT from-conf: testCompile to-conf: null is filtered.
    ...
2020-06-14T22:58:16.071-0700 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT using repositories [maven, maven2, MavenLocal, maven3,  gradle-plugins]

2020-06-14T22:58:16.071-0700 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Detected non-existence of module 'com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT' in resolver cache 'maven'
2020-06-14T22:58:16.071-0700 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Detected non-existence of module 'com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT' in resolver cache 'maven2'  {{{ B }}}
2020-06-14T22:58:16.072-0700 [DEBUG] [org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver] Loading file:/Users/christopher.bedford/.m2/repository/com/mouse/ap/data/qe/lib-reptile-generator/0.1-806-SNAPSHOT/lib-reptile-generator-0.1-806-SNAPSHOT.pom
2020-06-14T22:58:16.073-0700 [DEBUG] [org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver] No meta-data file or artifact found for module 'com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT' in repository 'MavenLocal'.
2020-06-14T22:58:16.073-0700 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.modulecache.PersistentModuleMetadataCache] Recording absence of module descriptor in cache: com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT [changing = false]
2020-06-14T22:58:16.073-0700 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Detected non-existence of module 'com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT' in resolver cache 'maven3'
2020-06-14T22:58:16.073-0700 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Detected non-existence of module 'com.mouse.ap.data.qe:lib-reptile-generator:0.1-806-SNAPSHOT' in resolver cache 'gradle-plugins'
2020-06-14T22:58:16.073-0700 [DEBUG] [org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor] Constructing external resource: https://artifacts.mouse.com/libs-release/com/mouse/ap/data/qe/lib-reptile-generator/0.1-806-SNAPSHOT/maven-metadata.xml
2020-06-14T22:58:16.074-0700 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Opening cache resource-at-url.bin (/Users/christopher.bedford/.gradle/caches/modules-2/metadata-2.96/resource-at-url.bin)
2020-06-14T22:58:16.076-0700 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationExecutor] Build operation 'Download https://artifacts.mouse.com/libs-release/com/mouse/ap/data/qe/lib-reptile-generator/0.1-806-SNAPSHOT/maven-metadata.xml' started

重要脚注:如果您遵循接受的答案中给出的好的建议,请确保避免我的愚蠢错误:不要将推荐的 'metadataSources' 块放在 buildscript { repositories 那肯定不是你想要的!

根据您的评论

there is no metadata of any kind (no pom, etc), just the .jar

您的存储库仅包含 jar 文件并且缺少元数据 pom 文件。在 6.0 之前,Gradle 尝试首先从 pom 派生元数据,然后如果缺少 pom 则尝试生成工件。 Gradle 6 改变了这一点。出于效率原因,默认元数据源仅为 gradleMetadata()mavenPom()。因此,如果两者都缺失,Gradle 似乎不会尝试下载 jar

要恢复旧行为并能够解决依赖关系,请将 artifact() 添加到您的 Maven 存储库 metadataSources 配置。

repositories {
    ['animals'].each { repo ->
        maven {
            name repo
            url "${urlDefinedInGradleProperties}/${repo}"
            credentials {
                username = 'mouse'
                password = 'mouse.mouse'
            }

            metadataSources {
                mavenPom()
                artifact()
            }
        }
    }
}

您可以在文档中阅读更多相关信息 Supported metadata sources