Gradle

  • Log In Access more options
    • Online Help
    • Keyboard Shortcuts
    • About JIRA
    • JIRA Credits
    • What’s New
  • Dashboards Access more options (Alt+d)
  • Projects Access more options (Alt+p)
  • Issues Access more options (Alt+i)
To raise new issues or bugs against Gradle, please use forums.gradle.org.
  • Gradle
  • GRADLE-2076

Artifact not found resolving dependencies with packaging/type "eclipse-plugin"

  • Log In
  • Views
    • XML
    • Word
    • Printable

Details

  • Type: Improvement Improvement
  • Status: Resolved Resolved
  • Resolution: Fixed
  • Affects Version/s: 0.8
  • Fix Version/s: 1.0-milestone-9
  • Gradle Forums topic Reference:

    question - Artifact not found resolving dependencies with packaging/type "eclipse-plugin" (complete)

Description

I'm currently writing a JaCoCo gradle plugin and have a dependency on the JaCoCo modules. Unfortunately, the pom for the modules specifies that the jar files have packaging "eclipse-plugin". This appears to translate into a resolved dependency which, when printed, looks like:

[[ResolvedArtifact dependency:org.jacoco:org.jacoco.agent:0.5.6.201201232323;default name:org.jacoco.agent classifier:null extension:eclipse-plugin type:eclipse-plugin]

Dependency resolution then fails with:

Could not resolve all dependencies for configuration ':services:agent:testRuntime'.
Cause: Artifact 'org.jacoco:org.jacoco.agent:0.5.6.201201232323@eclipse-plugin' not found

It seems that, because it is using Ivy under the covers, Gradle is falling victim to IVY-899 .

An example pom from one of the JaCoCo modules:

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.build</artifactId>
<version>0.5.6.201201232323</version>
<relativePath>../org.jacoco.build</relativePath>
</parent>

<artifactId>org.jacoco.report</artifactId>
<packaging>eclipse-plugin</packaging>
<name>JaCoCo :: Report</name>
<description>JaCoCo Reporting</description>

<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>org.jacoco.core</artifactId>
</dependency>
</dependencies>

<build>
<sourceDirectory>src</sourceDirectory>
</build>
</project>

Is there a workaround available in Gradle (SBT has one for example)?

Activity

Ascending order - Click to sort in descending order
  • All
  • Comments
  • History
  • Activity
  • TeamCity
  • Remote Attachments
  • Commits
  • Source
  • Reviews
Hide
Permalink
Gradle Forums added a comment - 01/Feb/12 10:15 PM

Your analysis is essentially correct: thanks for pointing out IVY-899. However due to changes required to the pom parsing code, we've already forked the ivy code involved, so we shouldn't need to wait for an ivy fix (we can do it ourselves).

Currently, Gradle has special handling for "pom", "ejb", "bundle" and "maven-plugin"; otherwise we just map the "packaging" value to the extension of the main artifact. Do you have any documentation on what are the allowable packaging values in maven, and how they should be mapped? I can't find anything comprehensive.

A possible workaround would be to use a "Client Module" to declare this dependency: [1]http://gradle.org/docs/current/usergu.... Gradle would then override the published metadata with the dependency metadata declared in your build script. This can be done on a per-dependency basis.
----------------------------------------------------------------------------------------
[1] http://gradle.org/docs/current/userguide/dependency_management.html#sub:client_module_dependencies

Show
Gradle Forums added a comment - 01/Feb/12 10:15 PM Your analysis is essentially correct: thanks for pointing out IVY-899. However due to changes required to the pom parsing code, we've already forked the ivy code involved, so we shouldn't need to wait for an ivy fix (we can do it ourselves). Currently, Gradle has special handling for "pom", "ejb", "bundle" and "maven-plugin"; otherwise we just map the "packaging" value to the extension of the main artifact. Do you have any documentation on what are the allowable packaging values in maven, and how they should be mapped? I can't find anything comprehensive. A possible workaround would be to use a "Client Module" to declare this dependency: [1]http://gradle.org/docs/current/usergu.... Gradle would then override the published metadata with the dependency metadata declared in your build script. This can be done on a per-dependency basis. ---------------------------------------------------------------------------------------- [1] http://gradle.org/docs/current/userguide/dependency_management.html#sub:client_module_dependencies
Daz DeBoer made changes - 10/Feb/12 11:41 PM
Field Original Value New Value
Component/s dependencies [ 10022 ]
Priority Minor [ 4 ]
Affects Version/s 0.8 [ 10041 ]
Fix Version/s 1.0-milestone-9 [ 10161 ]
Assignee Daz DeBoer [ daz ]
Daz DeBoer made changes - 10/Feb/12 11:41 PM
Labels dependencies
Hide
Permalink
Daz DeBoer added a comment - 10/Feb/12 11:42 PM

Maven pom modules with packing = 'eclipse-plugin' are now assumed to have 'jar' artifacts.

Show
Daz DeBoer added a comment - 10/Feb/12 11:42 PM Maven pom modules with packing = 'eclipse-plugin' are now assumed to have 'jar' artifacts.
Daz DeBoer made changes - 10/Feb/12 11:42 PM
Resolution Fixed [ 1 ]
Status Open [ 1 ] Resolved [ 5 ]
Hide
Permalink
Ryan J added a comment - 13/Mar/12 12:03 PM - edited

This is also a problem for Jetty. One of the artifacts uses orbit packaging with a jar extension.

http://search.maven.org/#artifactdetails|org.eclipse.jetty.orbit|javax.servlet|3.0.0.v201112011016|orbit

I think this is a mailing list post explaining what they're trying to accomplish, but it's long and I can't find a decent threaded version of the conversation.

http://dev.eclipse.org/mhonarc/lists/orbit-dev/msg02398.html

This works for me (for now).

compile module("org.eclipse.jetty:jetty-server:8.1.2.v20120308") {
    dependencies(
        "org.eclipse.jetty.orbit:javax.servlet:3.0.0.v201112011016@jar",
        "org.eclipse.jetty:jetty-continuation:8.1.2.v20120308",
        "org.eclipse.jetty:jetty-http:8.1.2.v20120308"
    )
}

There's also jbi-component and jbi-shared-library suggested in IVY-899.

I might be wrong, but Maven seems to default to jar if <type></type> isn't specified in the dependency declaration. Would defaulting to jar for unknown packaging types cause problems with Gradle (or Ivy for that matter)?

Edit: JETTY-1493

Show
Ryan J added a comment - 13/Mar/12 12:03 PM - edited This is also a problem for Jetty. One of the artifacts uses orbit packaging with a jar extension. http://search.maven.org/#artifactdetails|org.eclipse.jetty.orbit|javax.servlet|3.0.0.v201112011016|orbit I think this is a mailing list post explaining what they're trying to accomplish, but it's long and I can't find a decent threaded version of the conversation. http://dev.eclipse.org/mhonarc/lists/orbit-dev/msg02398.html This works for me (for now).
compile module("org.eclipse.jetty:jetty-server:8.1.2.v20120308") {
    dependencies(
        "org.eclipse.jetty.orbit:javax.servlet:3.0.0.v201112011016@jar",
        "org.eclipse.jetty:jetty-continuation:8.1.2.v20120308",
        "org.eclipse.jetty:jetty-http:8.1.2.v20120308"
    )
}
There's also jbi-component and jbi-shared-library suggested in IVY-899. I might be wrong, but Maven seems to default to jar if <type></type> isn't specified in the dependency declaration. Would defaulting to jar for unknown packaging types cause problems with Gradle (or Ivy for that matter)? Edit: JETTY-1493
Luke Daley made changes - 03/Jan/13 4:49 AM
Issue Type Task [ 3 ] Improvement [ 4 ]
Luke Daley made changes - 03/Jan/13 5:09 AM
Status Resolved [ 5 ] Closed [ 6 ]
Workflow jira with pivotal tracker [ 15232 ] jira with pivotal tracker (no resolved, only closed) [ 18755 ]
Luke Daley made changes - 04/Jan/13 5:10 AM
Status Closed [ 6 ] Resolved [ 5 ]
Workflow jira with pivotal tracker (no resolved, only closed) [ 18755 ] Copy of jira with pivotal tracker (no closed, only resolved) [ 21352 ]
There is no attachment available.
Unable to get TeamCity builds: No active plugin license is found! Please visit http://stiltsoft.com/teamcity for details

People

  • Assignee:
    Daz DeBoer
    Reporter:
    Gradle Forums
Vote (0)
Watch (1)

Dates

  • Created:
    01/Feb/12 10:15 PM
    Updated:
    04/Jan/13 5:10 AM
    Resolved:
    10/Feb/12 11:42 PM
  • Atlassian JIRA (v5.0.3#729-sha1:bf569e4)
  • Report a problem
  • Powered by a free Atlassian JIRA open source license for Gradle. Try JIRA - bug tracking software for your team.