Details
-
Type:
Bug
-
Status:
Resolved
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 1.0-milestone-4
Description
When I try to use a dependency the following error appears:
:::: ERRORS
a module is not authorized to depend on itself: net.jini#jsk-platform;2.1
FAILURE: Build failed with an exception.
- What went wrong:
Could not resolve all dependencies for configuration ':compile'.
Cause: java.lang.IllegalArgumentException: a module is not authorized to depend on itself: net.jini#jsk-platform;2.1
- Exception is:
org.gradle.api.artifacts.LocationAwareResolveException: Could not resolve all dependencies for configuration ':compile'.
at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingIvyService.wrapException(ErrorHandlingIvyService.java:63)
at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingIvyService.access$000(ErrorHandlingIvyService.java:28)
at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingIvyService$BrokenResolvedConfiguration.rethrowFailure(ErrorHandlingIvyService.java:127)
....
Caused by: java.lang.IllegalArgumentException: a module is not authorized to depend on itself: net.jini#jsk-platform;2.1
at org.apache.ivy.core.resolve.IvyNodeCallers.addCaller(IvyNodeCallers.java:169)
at org.apache.ivy.core.resolve.IvyNode.addCaller(IvyNode.java:1026)
at org.apache.ivy.core.resolve.IvyNode.getDependencies(IvyNode.java:352)
at org.apache.ivy.core.resolve.VisitNode.getDependencies(VisitNode.java:301)
at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:750)
at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:679)
at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:757)
at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:679)
at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:757)
....
A bare-bone script that shows this:
repositories {
mavenRepo urls: 'http://www.rio-project.org/maven2/'
}
dependencies {
compile group: 'org.rioproject', name: 'rio', version: '4.0'
}
Although there is an Ivy issue which seems to have the same root:
https://issues.apache.org/jira/browse/IVY-1086
I decided to report it here, because that report is rather old and at least a workaround would be needed for gradle as soon as it is possible.
I do not know how to solve this problem. Until I am not able to use this repo, can not get rid of my custom repo and change fully to a repo manager (like artifactory, where the issue also appears).
.
The failing dependency has the following pom:
<project> <modelVersion>4.0.0</modelVersion> <groupId>net.jini</groupId> <artifactId>jsk-platform</artifactId> <name>Jini Starter Kit Platform Jar</name> <version>2.1</version> <inceptionYear>2005</inceptionYear> <organization /> <build /> <dependencies> <dependency> <groupId>net.jini</groupId> <artifactId>jsk-platform</artifactId> <version>2.1</version> </dependency> </dependencies> </project>You could argue that such a pom does not make any sense. On the other hand Maven resolves is without throwing an exception. If you look at the Maven resolve debug output you find the following:
The problem is that Ivy's approach for Maven compatibility is reverse engineering Maven's behavior. Whether the above pom makes sense or not is a mute point. We need to provide the same behavior as Maven. To achieve that we will use a native Maven resolver in Gradle 1.0, where we use embedded Maven to let Maven do the job without the need for reverse engineering it's behavior.
<project> <modelVersion>4.0.0</modelVersion> <groupId>net.jini</groupId> <artifactId>jsk-platform</artifactId> <name>Jini Starter Kit Platform Jar</name> <version>2.1</version> <inceptionYear>2005</inceptionYear> <organization /> <build /> <dependencies> <dependency> <groupId>net.jini</groupId> <artifactId>jsk-platform</artifactId> <version>2.1</version> </dependency> </dependencies> </project>