Chris Bedford
Chris Bedford

Reputation: 2692

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

I have whittled down my problem to a very simple project that declares a module dependency on a module artifact served from my client's artifactory instance. This is working fine with 5.3.1. As can be seen from the logs below there is a line which indicates DefaultExternalResourceArtifactResolver is loading the associated .jar for this dependency from my maven2 repo (see: {{{ A }}})

However, when I attempted to upgrade to Gradle 6.5, I get the message

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'

(see {{{ B }}}).

I am too much of a Gradle lightweight to start diving into the source code. I was hoping someone might give me a hint as to what might be the cause of this problem.

Here are the build files (edited for client anonymity):

root project 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'
        }
      }
    }
  }
}

sub project build.gradle

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

Logs are shown below. Thanks in advance ! /chris

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

IMPORTANT FOOTNOTE: If you follow the good advice given in the accepted answer, make sure you avoid my foolish mistake: Don't put the recommended 'metadataSources' block under buildscript { repositories That is surely not what you want !

Upvotes: 2

Views: 1115

Answers (1)

Thomas K.
Thomas K.

Reputation: 6770

According to your comment

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

your repository contains the jar file only and misses the metadata pom file. Before 6.0, Gradle tried to derive metadata from pom first and then the artifact if pom was missing. This changed with Gradle 6. For efficiency reasons, the default metadata sources are gradleMetadata() and mavenPom() only. So if both are missing Gradle doesn't seem to try to download the jar.

To restore the old behavior and being able to resolve the dependency add artifact() to your Maven repository metadataSources configuration.

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

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

You can read more about this in the docs Supported metadata sources.

Upvotes: 2

Related Questions