12

I am trying to copy the newest jar file (com.bar.baz:mapping:0.0.1-SNAPSHOT) from my Nexus server using Gradle.

Downloading a specific version works using the following build.gradle:

apply plugin: "java"

repositories {
    maven {
        credentials  {
            username = "${mavenUser}"
            password = "${mavenPassword}"
        }
        url "https://nexus.cluster.foo.cloud/repository/maven-snapshots"
        authentication {
            basic(BasicAuthentication)
        }
    }
}

configurations {
    copyConf
}

dependencies {
    copyConf group: "com.bar.baz", name: "mapping", version: "0.0.1-20190508.085532-7"
}

task copyTask(type: Copy) {
    from configurations.copyConf
    into "."
}

But I want to download the newest 0.0.1-SNAPSHOT version, not the specific 0.0.1-20190508.085532-7 version. Is that possible? How?

Using version "latest.integration" instead of "0.0.1-20190508.085532-7" (and calling gradle copyTask --refresh-dependencies --stacktrace) yields:

FAILURE: Build failed with an exception.

* What went wrong: Could not resolve all files for configuration ':copyConf'.
> Could not find any matches for com.bar.baz:mapping:latest.integration as no versions
of com.bar.baz:mapping are available.   Searched in
the following locations:
      https://nexus.cluster.foo.cloud/repository/maven-snapshots/com/ba/baz/mapping/maven-metadata.xml
      https://nexus.cluster.foo.cloud/repository/maven-snapshots/com/bar/baz/mapping/0.0.1-SNAPSHOT/maven-metadata.xml
      https://nexus.cluster.foo.cloud/repository/maven-snapshots/com/bar/baz/mapping/0.0.1-SNAPSHOT/mapping-0.0.1-20190508.085534-8.pom
      https://nexus.cluster.foo.cloud/repository/maven-snapshots/com/bar/baz/mapping/0.0.1-SNAPSHOT/mapping-0.0.1-20190508.085534-8.jar
Required by:
      project :

* Try: Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException:
Could not resolve all files for configuration ':copyConf'.
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.rethrowFailure(DefaultConfiguration.java:918)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.access$1600(DefaultConfiguration.java:116)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.getFiles(DefaultConfiguration.java:892)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.getFiles(DefaultConfiguration.java:404)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated.getFiles(Unknown
Source)
        at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext$FileTreeConverter.convertInto(DefaultFileCollectionResolveContext.java:206)
        at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:116)
…

Update:

Using version "0.0.1-SNAPSHOT" instead of "0.0.1-20190508.085532-7" (and calling gradle copyTask --refresh-dependencies --stacktrace) yields almost the same error, the only diff is:

  • Line 2 is instead:

    Could not find com.bar.baz:mapping:0.0.1-SNAPSHOT.

  • No search in location https://nexus.cluster.foo.cloud/repository/maven-snapshots/com/ba/baz/mapping/maven-metadata.xml

Using version "0.0.1" instead of "0.0.1-20190508.085532-7" (and calling gradle copyTask --refresh-dependencies --stacktrace) yields:

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all files for configuration ':copyConf'.
> Could not resolve com.bar.baz:mapping:0.0.1.
  Required by:
      project :
   > Could not resolve com.bar.baz:mapping:0.0.1.
      > Could not get resource 'https://nexus.cluster.regulator.cloud/repository/maven-snapshots/com/bar/baz/mapping/0.0.1/mapping-0.0.1.pom'.
         > Could not GET 'https://nexus.cluster.regulator.cloud/repository/maven-snapshots/com/bar/baz/mapping/0.0.1/mapping-0.0.1.pom'. Received status code 400 from server: Bad Request

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':copyConf'.
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.rethrowFailure(DefaultConfiguration.java:918)
...

Another update:

Copying the newest jar file from nexus server with maven does work, with the following pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.bar.baz</groupId>
  <artifactId>TAndMapping</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>${project.artifactId}</name>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <mapping>mapping</mapping>
  </properties>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.1.1</version>
        <executions>
          <execution>
            <id>copy</id>
            <phase>package</phase>
            <goals>
              <goal>copy</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <artifactItems> 
            <artifactItem>
              <groupId>com.bar.baz</groupId>
              <artifactId>${mapping}</artifactId>
              <version>0.0.1-SNAPSHOT</version>
              <type>jar</type>
              <overWrite>true</overWrite>
              <destFileName>${mapping}.jar</destFileName>   
            </artifactItem>
          </artifactItems>
          <overWriteSnapshots>true</overWriteSnapshots>
        </configuration>
      </plugin> 
    </plugins>
  </build>
  <repositories>
    <repository>
      <id>nexus-snapshots</id>
      <name>Snapshot</name>
      <url>https://nexus.cluster.regulator.cloud/repository/maven-snapshots/</url>
    </repository>
  </repositories>
</project>

Another update: Switching to Gradle 5.4.1, I get a bit different stacktraces:

For version latest.integration:

  • Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':copyTask'. at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:38) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:73) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406) at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:49) at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':copyConf'. at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.rethrowFailure(DefaultConfiguration.java:1195) at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.access$2100(DefaultConfiguration.java:138) at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.getFiles(DefaultConfiguration.java:1170) at org.gradle.api.internal.file.AbstractFileCollection.iterator(AbstractFileCollection.java:72) at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.iterator(DefaultConfiguration.java:467) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext$FileTreeConverter.convertInto(DefaultFileCollectionResolveContext.java:209) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:114) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveAsFileTrees(DefaultFileCollectionResolveContext.java:85) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext$FileTreeConverter.convertInto(DefaultFileCollectionResolveContext.java:195) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:109) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveAsFileTrees(DefaultFileCollectionResolveContext.java:85) at org.gradle.api.internal.file.CompositeFileCollection$1.visitContents(CompositeFileCollection.java:130) at org.gradle.api.internal.file.CompositeFileTree$FilteredFileTree.visitContents(CompositeFileTree.java:120) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveNested(DefaultFileCollectionResolveContext.java:144) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:112) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveAsFileCollections(DefaultFileCollectionResolveContext.java:92) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext$FileCollectionConverter.convertInto(DefaultFileCollectionResolveContext.java:164) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:109) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveAsFileCollections(DefaultFileCollectionResolveContext.java:92) at org.gradle.api.internal.file.CompositeFileCollection.getSourceCollections(CompositeFileCollection.java:192) at org.gradle.api.internal.file.CompositeFileCollection.isEmpty(CompositeFileCollection.java:98) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:67) at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67) at org.gradle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:94) at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:95) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) ... 24 more Caused by: org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find any matches for com.bar.baz:mapping:latest.integration as no versions of com.bar.baz:mapping are available. Searched in the following locations:

For version 0.0.1-SNAPSHOT:

  • Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':copyTask'. at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:38) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:73) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406) at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:49) at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':copyConf'. at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.rethrowFailure(DefaultConfiguration.java:1195) at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.access$2100(DefaultConfiguration.java:138) at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.getFiles(DefaultConfiguration.java:1170) at org.gradle.api.internal.file.AbstractFileCollection.iterator(AbstractFileCollection.java:72) at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.iterator(DefaultConfiguration.java:467) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext$FileTreeConverter.convertInto(DefaultFileCollectionResolveContext.java:209) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:114) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveAsFileTrees(DefaultFileCollectionResolveContext.java:85) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext$FileTreeConverter.convertInto(DefaultFileCollectionResolveContext.java:195) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:109) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveAsFileTrees(DefaultFileCollectionResolveContext.java:85) at org.gradle.api.internal.file.CompositeFileCollection$1.visitContents(CompositeFileCollection.java:130) at org.gradle.api.internal.file.CompositeFileTree$FilteredFileTree.visitContents(CompositeFileTree.java:120) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveNested(DefaultFileCollectionResolveContext.java:144) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:112) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveAsFileCollections(DefaultFileCollectionResolveContext.java:92) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext$FileCollectionConverter.convertInto(DefaultFileCollectionResolveContext.java:164) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:109) at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveAsFileCollections(DefaultFileCollectionResolveContext.java:92) at org.gradle.api.internal.file.CompositeFileCollection.getSourceCollections(CompositeFileCollection.java:192) at org.gradle.api.internal.file.CompositeFileCollection.isEmpty(CompositeFileCollection.java:98) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:67) at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67) at org.gradle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:94) at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:95) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) ... 24 more Caused by: org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find com.bar.baz:mapping:0.0.1-SNAPSHOT. Searched in the following locations:

For version 0.0.1:

  • Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':copyTask'. at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:38) ..... org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) ... 24 more Caused by: org.gradle.internal.resolve.ModuleVersionResolveException: Could not resolve com.bar.baz:mapping:0.0.1. Required by: project : Caused by: org.gradle.internal.resolve.ModuleVersionResolveException: Could not resolve com.bar.baz:mapping:0.0.1. Caused by: org.gradle.api.resources.ResourceException: Could not get resource 'https://nexus.cluster.regulator.cloud/repository/maven-snapshots/com/bar/baz/mapping/0.0.1/mapping-0.0.1.pom'. at org.gradle.internal.resource.ResourceExceptions.failure(ResourceExceptions.java:74)
    .... org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) Caused by: org.gradle.internal.resource.transport.http.HttpErrorStatusCodeException: Could not GET 'https://nexus.cluster.regulator.cloud/repository/maven-snapshots/com/bar/baz/mapping/0.0.1/mapping-0.0.1.pom'. Received status code 400 from server: Bad Request at org.gradle.internal.resource.transport.http.HttpClientHelper.processResponse(HttpClientHelper.java:160) at ... org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':copyConf'. ... org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) ... 24 more Caused by: org.gradle.internal.resolve.ModuleVersionResolveException: Could not resolve com.bar.baz:mapping:0.0.1. Required by: project : Caused by: org.gradle.internal.resolve.ModuleVersionResolveException: Could not resolve com.bar.baz:mapping:0.0.1. Caused by: org.gradle.api.resources.ResourceException: Could not get resource 'https://nexus.cluster.regulator.cloud/repository/maven-snapshots/com/bar/baz/mapping/0.0.1/mapping-0.0.1.pom'. at org.gradle.internal.resource.ResourceExceptions.failure(ResourceExceptions.java:74) ... at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.copyToCache(DefaultCacheAwareExternalResourceAccessor.java:199) ... 110 more

Another update: Due to @Louis Jacomet's answer, I looked into our Nexus server in more detail, and currently, .../com/bar/baz/mapping/0.0.1-SNAPSHOT/maven-metadata.xml lists:

<metadata modelVersion="1.1.0">
<groupId>com.bar.baz</groupId>
<artifactId>mapping</artifactId>
<version>0.0.1-SNAPSHOT</version>
<versioning>
  <snapshot>
    <timestamp>20190516.163117</timestamp>
    <buildNumber>2</buildNumber>
  </snapshot>
  <lastUpdated>20190516163117</lastUpdated>
  <snapshotVersions>  
    <snapshotVersion>
      <extension>jar</extension>
      <value>0.0.1-20190516.163116-1</value>
      <updated>20190516163117</updated>
    </snapshotVersion>
    <snapshotVersion>
      <extension>pom</extension>
      <value>0.0.1-20190516.163116-1</value>
      <updated>20190516163117</updated>
    </snapshotVersion>
  </snapshotVersions>
</versioning>
</metadata>

Consequently, gradle searches in https://nexus.cluster.regulator.cloud/repository/maven-snapshots/com/bar/baz/mapping/0.0.1-SNAPSHOT/mapping-0.0.1-20190516.163117-2.jar. It cannot find it, because the only version available on the Nexus server is version 0.0.1-20190516.163116-1. I do not understand why this is the case and guess it is a Nexus bug, not a Gradle bug. However, copying via Maven (see second update with pom.xml) still finds the 0.0.1-SNAPSHOT version available on Nexus and downloads it.

DaveFar
  • 7,078
  • 4
  • 50
  • 90
  • 1
    This feature seems to have been added only in Nexus 3.16.0 with [NEXUS-14407](https://help.sonatype.com/repomanager3/release-notes/2019-release-notes#id-2019ReleaseNotes-RepositoryManager3.16.0) : "*REST search now supports sorting results, as well as filtering prerelease components, allowing the search and download endpoint to return the latest version of an asset.*" – Ortomala Lokni May 10 '19 at 15:56
  • I have not tried in a while so this may be not true any more, but `com.bar.baz:mapping:0.0.1-SNAPSHOT` should give you the latest snapshot of version 0.0.1. Note however, that some caching is done at the client, so you will not see the newest version uploaded to the server if you have downloaded it before. See also https://stackoverflow.com/questions/13565082/how-can-i-force-gradle-to-redownload-dependencies – Henry May 11 '19 at 08:31
  • @Henry: that’s what I thought, too. However, note that the OP _has_ run Gradle with `--refresh-dependencies` and it still doesn’t seem to work. I wonder if this is some Nexus issue. – Chriki May 11 '19 at 08:36
  • 1
    @DaveFar: do you get the very same error as posted for all three different version strings (`"latest.integration"`, `"0.0.1-SNAPSHOT"` and `"0.0.1"`)? I would expect them to possibly look different; maybe you can post them if they do indeed differ as that might help track down what’s wrong here. – Chriki May 11 '19 at 14:14
  • @OrtomalaLokni: Oh, very interesting. I have tried REST for Nexus 3.15.2-01 and only get emptly lists for all my searches. – DaveFar May 13 '19 at 07:25
  • @Chriki: Good idea. They do differ (a bit), so I have updated my question at the bottom to describe the difference in the error messages. – DaveFar May 13 '19 at 08:43
  • @Chriki: I have added my Maven solution to show that Nexus can potentially resolve the version `0.0.1-SNAPSHOT`. – DaveFar May 13 '19 at 08:52
  • @Henry: since I never get any copy and use `--refresh-dependencies`, I don't think it is a caching issue. Using gradle properties group, name, version should work identically to `group:name:version`, right!? – DaveFar May 13 '19 at 11:42
  • Yes. Any chance you can add the lowest exception from these stacktraces? – Louis Jacomet May 14 '19 at 08:19
  • @LouisJacomet: I added the stacktraces I get with my updated Gradle. – DaveFar May 14 '19 at 09:17

1 Answers1

3

Looks like you are getting

org.gradle.internal.resource.transport.http.HttpErrorStatusCodeException: Could not GET 'https://nexus.cluster.regulator.cloud/repository/maven-snapshots/com/bar/baz/mapping/0.0.1/mapping-0.0.1.pom'. Received status code 400 from server: Bad Request

Given that, the most likely explanation is that the configuration of the repository is wrong. Check the kind of authentication that is setup for Maven or check if your internal organisation has additional checks before accepting connections to the Nexus instance.

Edit after edited question

So clearly there is a mismatch between the maven-metadata.xml file in Nexus and what Gradle parses.

As can be seen in code:

if ("metadata/versioning/snapshot/timestamp".equals(getContext())) {
    mavenMetadata.timestamp = getText();
}
if ("metadata/versioning/snapshot/buildNumber".equals(getContext())) {
    mavenMetadata.buildNumber = getText();
}
if ("metadata/versioning/versions/version".equals(getContext())) {
    mavenMetadata.versions.add(getText().trim());
}

Gradle only looks at the snapshot node and not the snapshotVersions ones.

Two options from there:

  1. Publish another snapshot and see if that resolves the maven-metadata.xml inconsistency.
  2. File an issue against Gradle, asking for improved support of these corner cases
Louis Jacomet
  • 13,661
  • 2
  • 34
  • 43
  • 1
    Thanks (+1), I will check. I ruled out authentication as cause since I am able to copy for `version: "0.0.1-20190508.085532-7"`. – DaveFar May 16 '19 at 14:40
  • Thanks a lot for the advice, I looked closer into our Nexus instance, and the SNAPSHOT versioning seems weird to me. I have no idea what causes this state of versioning on the Nexus instance... I have updated my question at the bottom. – DaveFar May 17 '19 at 07:43
  • Edited my answer following your additions to the question – Louis Jacomet May 23 '19 at 14:03