Gradle 1.12 tries to resolve custom packaging with .jar extension

Hi,

I have a plugin that generates custom artifacts (.zip) and uploads them via maven to a nexus repository.

When I upgrade to gradle 1.12 I get errors when the plugin tries to find the artificats.

Caused by: org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ArtifactNotFoundException: Artifact '<group>:<name>:<version>:<name>.jar' not found.

I debugged a bit and found out that the jar extension is mentioned in the cache

~/.gradle/caches/modules-2/metadata-2.6/descriptors/<group>/<name>/<version>/a3513388c78b5904e7c3c3af682f5a1a/ivy.xml:
....
  <publications>
    <artifact name="jquery-no-conflict-with-ui" type="zip" ext="jar" conf="master"/>
  </publications>
....

Any idea where to tell gradle how to resolve the configurations with zip extension?

Thanks in advance

Can you show the dependency declaration? Also, can you double-check that this problem exists with 1.12 but not 1.11?

hey so the problem occures as soon as I set the

gradleVersion from “1.11” to “1.12” and run the wrapper task ( wrapper task runs successfully) but the tasks I execute afterwards fail.

The dependencies are defined like this:

dependencies {
 webbundle "group:name:version"
}

webbundle is defined by my applied plugin: in the apply method:

project.configurations {
   webbundle
   testWebbundle { extendsFrom webbundle }
}

there is also a conf2scopeMapping

if (project.plugins.hasPlugin(MavenPlugin)) {
   project.conf2ScopeMappings.addMapping(500, project.configurations.webbundle, "webbundle")
 }

The point where the plugin accesses the dependencies usually looks like this:

ResolvedComponentResult module = configuration.incoming.resolutionResult.root
  for(Dependency d : module.dependencies){
....
}

Should I use @zip in the dependencies? but then I got the feeling the transitive dependencies are not being resolved or should I set the type/ext for the configuration somewhere explicitly? I guess I also could go for JARing it but since it does not contain a META-INF nor classes I thought that would be wrong.

Running the dependencies task with 1.12 still seems to work.

Can you show the code involved in publishing the zip? Perhaps the problem is on the publishing side.

For publishing I use the “maven” plugin

project.apply plugin: 'maven'

The Archive task looks like this.

def assembleWebbundleTask = project.task("assembleWebbundle", type: Zip) {
   from(taskX) { into "x/" }
 from(taskY) { into "y/" }
 from(taskZ) { into "z/" }
 from onMoreFileGeneratingTask
}
project.artifacts { archives assembleWebbundleTask }

The generated build/poms/pom-default.xml

contains:

<packaging>zip</packaging>

and the other dependencies

<dependency>
      <groupId>my.group</groupId>
      <artifactId>my-name</artifactId>
      <version>1.2.3-SNAPSHOT</version>
      <scope>webbundle</scope>
 </dependency>

Raised GRADLE-3081. If you can provide a self-contained reproducible example, this would be very helpful.

Ok I try to create an example

Hi I build an self contained example here:

https://github.com/mxab/gradle-custom-package-resolve-problem

One thing I stated wrong in my initial problem description the error does NOT come when I loop through

ResolvedComponentResult module = configuration.incoming.resolutionResult.root
for(Dependency d : module.dependencies){
....
}

but when I try to access files via resolvedConfiguration.resolvedArtifacts like this:

myZipConf.resolvedConfiguration.resolvedArtifacts.each { ResolvedArtifact resolvedArtifact ->
                  println "$resolvedArtifact.name:"
                project.zipTree(resolvedArtifact.file).each { file ->
                    println "\t$file content: "
                    println file.text
                }
            }