All right, I've been running more experiments and I think I have narrowed
down the problem significantly. I'm attaching a pared down ivy.xml,
ivysettings.xml, build.xml, and the problematic pom file. I'm also attaching
the output of "resolve" for 4 representative experiments which I ran using a
local filesystem repository to hold the simplified cleartk-test-util pom.
These experiments are:
1) My project (in ivy.xml) depends only on the pared down cleartk-test-util,
which only depends on jdom:jdom:1.1. The resolve here FAILS, because it
can't find the artifact for jdom:jdom:1.1 (instead of looking for it under
org.jdom:jdom:1.1).
2) Same as 1, but I removed line 37 (<type>jar</type>, which I believe
should be ignored anyway since that's the default value). The resolve here
ends in SUCCESS, and the cleartk-test-util and jdom artifacts are resolved.
3) Ignoring cleartk-test-util, my project depends only on jdom:jdom:1.1. The
resolve succeeds, Ivy correctly looks for the artifact under
org.jdom:jdom:1.1. The jdom artifact is resolved.
4) Same as 3, but instead of jdom:jdom:1.1 my project now depends on
org.jdom:jdom:1.1. As expected, the resolve succeeds, Ivy finds the jdom
artifact under org.jdom:jdom:1.1. But only in this experiment does Ivy also
resolve the dependencies of jdom (xercesImpl, xmlParserAPIs, jaxen-core,
jaxen-jdom, saxpath, xalan). This is what should happen in all 4
experiments.
It seems to me that two things are going wrong here:
First, when <type>jar</type> is specified in the pom of the direct
dependency, relocation isn't properly handled in the transitive dependency.
Second, whenever a relocation pointer is followed during resolution, the
dependencies of the relocated dependency are ignored.
All of the experiments were run after deleting ~/.ivy2/cache/*, and using
the snapshot version of Ivy that I downloaded yesterday.
Philipp
On Tue, Dec 15, 2009 at 5:50 PM, Philipp Wetzler <[email protected]>wrote:
> On Tue, Dec 15, 2009 at 4:55 PM, Maarten Coene <[email protected]>wrote:
>
>> I don't have a problem when I add a dependency on this cleartk-test-util
>> module.
>>
>> What version of Ivy are you using?
>> If you are using the latest released version, could you try again with a
>> snapshot build?
>> You can download snapshot builds here:
>> http://hudson.zones.apache.org/hudson/view/Ant/job/Ivy/
>
>
> Sorry for the delay. I've been experimenting with various different setups.
> I did download and install the most recent snapshot (2.2.0.20091208210308),
> and between every resolve I deleted the Ivy cache.
>
> First of all, after trying to trim down my ivysettings.xml I realized that
> I had been using a slightly different version of the pom, which was being
> pulled from a local repository. Unfortunately that version of the pom was
> deleted during my experiments, so I don't have it anymore. Using the online
> version of the pom the resolve worked.
>
> One difference in the pom files was that, in addition to specifying the
> groupId, artifactId and version elements for jdom, the local copy also
> specified <optional>false</optional> and <type>jar</type>, which as I
> understand it are simply the default values. Strangely, when I removed these
> extra elements (no other change) the resolve worked as it should, properly
> handling the relocation.
>
> On the other hand, if I copy the pom that's online to the local repository
> and _add_ those extra elements, the resolve still works fine, so there must
> be something else....
>
> I realize this is not exactly helpful. At this point, without the original
> problematic pom, I haven't been able to reproduce this error anymore, but it
> might show up again with other packages. From a user's perspective, it would
> be nice to have a better way of diagnosing such dependency issues, for
> example seeing which transitive dependencies are added and why. If there's a
> way to do that, I haven't been able to find it in the documentation.
>
> I'll be experimenting more with this tomorrow and will let you know if the
> problem shows up again. Thanks a lot for your help so far!
>
>
> Philipp
>
>
>
>
>>
>> ----- Original Message ----
>> From: Philipp Wetzler <[email protected]>
>> To: [email protected]
>> Sent: Wed, December 16, 2009 12:44:17 AM
>> Subject: Re: relocation of transitive dependency
>>
>> On Tue, Dec 15, 2009 at 4:32 PM, Maarten Coene <[email protected]
>> >wrote:
>>
>> > Do you have an example of a public pom that has a dependency on org=jdom
>> > 1.1 ?
>> >
>>
>> This is one I've been confronted with:
>>
>>
>> http://cleartk.googlecode.com/svn/repo/org/cleartk/cleartk-test-util/0.1/cleartk-test-util-0.1.pom
>>
>> BTW, when building a Maven project that also depends on this, the problem
>> doesn't occur, so it seems that this is either due to my Ivy configuration
>> or Ivy itself.
>>
>>
>> Philipp
>>
>>
>>
>> > ----- Original Message ----
>> > From: Philipp Wetzler <[email protected]>
>> > To: [email protected]
>> > Sent: Wed, December 16, 2009 12:22:50 AM
>> > Subject: relocation of transitive dependency
>> >
>> > Hello,
>> >
>> > I've started using Ivy recently in order to better integrate one of my
>> Ant
>> > based projects with it's Maven dependencies.
>> >
>> > Now I ran into a problem that I haven't been able to figure out: One of
>> my
>> > Maven dependencies depends on jdom (org=jdom, name=jdom, rev=1.1). JDom
>> 1.1
>> > is actually published under org=org.jdom, but there's a relocation
>> record
>> > under org=jdom. When I do a resolve on my project, however, Ivy ignores
>> the
>> > relocation record and attempts (and fails) to download the nonexistent
>> jar
>> > from org=jdom (from repo1.maven.org).
>> >
>> > Interestingly, when I remove the Maven dependency from my project and
>> add
>> > JDom 1.1 as a direct dependency, Ivy manages to resolve it correctly
>> using
>> > either org value, so it seems that this problem only occurs when the
>> > relocated dependency is a transitive one.
>> >
>> > How would I go about diagnosing this problem? I tried doing a resolve
>> with
>> > the verbose / debug flags, but the additional information didn't seem
>> > helpful to me.
>> >
>> > Thanks for any suggestions
>> >
>> >
>> > Philipp
>> >
>> >
>> >
>> >
>> >
>>
>>
>>
>>
>>
>
$ ant resolve
Buildfile: build.xml
resolve:
[ivy:configure] :: Ivy 2.2.x-local-20091208210308 - 20091208210308 ::
http://ant.apache.org/ivy/ ::
[ivy:configure] :: loading settings :: file =
/Users/phwetzler/workspace/DLS/DLS/ivysettings.xml
[ivy:resolve] :: resolving dependencies ::
edu.colorado.dls#Quality;[email protected]
[ivy:resolve] confs: [default]
[ivy:resolve] found org.cleartk#cleartk-test-util;0.2-SNAPSHOT in local
[ivy:resolve] jdom#jdom;1.1 is relocated to org.jdom#jdom;1.1. Please update
your dependencies.
[ivy:resolve] found jdom#jdom;1.1 in maven.org
[ivy:resolve] found org.jdom#jdom;1.1 in maven.org
[ivy:resolve] downloading
/Users/phwetzler/workspace/DLS/DLS/lib/org.cleartk/cleartk-test-util/0.2-SNAPSHOT/cleartk-test-util-0.2-SNAPSHOT.jar
...
[ivy:resolve] .. (24kB)
[ivy:resolve] [SUCCESSFUL ]
org.cleartk#cleartk-test-util;0.2-SNAPSHOT!cleartk-test-util.jar (2ms)
[ivy:resolve] downloading
http://repo1.maven.org/maven2/org/jdom/jdom/1.1/jdom-1.1.jar ...
[ivy:resolve]
............................................................................................................
(149kB)
[ivy:resolve] .. (0kB)
[ivy:resolve] [SUCCESSFUL ] org.jdom#jdom;1.1!jdom.jar (1479ms)
[ivy:resolve] :: resolution report :: resolve 4764ms :: artifacts dl 2238ms
---------------------------------------------------------------------
| | modules || artifacts |
| conf | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
| default | 3 | 3 | 3 | 0 || 3 | 2 |
---------------------------------------------------------------------
[ivy:resolve]
[ivy:resolve] :: problems summary ::
[ivy:resolve] :::: WARNINGS
[ivy:resolve] [NOT FOUND ] jdom#jdom;1.1!jdom.jar (744ms)
[ivy:resolve] ==== maven.org: tried
[ivy:resolve] http://repo1.maven.org/maven2/jdom/jdom/1.1/jdom-1.1.jar
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :: FAILED DOWNLOADS ::
[ivy:resolve] :: ^ see resolution messages for details ^ ::
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :: jdom#jdom;1.1!jdom.jar
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve]
[ivy:resolve] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS
BUILD FAILED
/Users/phwetzler/workspace/DLS/DLS/build.xml:5: impossible to resolve
dependencies:
resolve failed - see output for details
Total time: 7 seconds$ ant resolve
Buildfile: build.xml
resolve:
[ivy:configure] :: Ivy 2.2.x-local-20091208210308 - 20091208210308 ::
http://ant.apache.org/ivy/ ::
[ivy:configure] :: loading settings :: file =
/Users/phwetzler/workspace/DLS/DLS/ivysettings.xml
[ivy:resolve] :: resolving dependencies ::
edu.colorado.dls#Quality;[email protected]
[ivy:resolve] confs: [default]
[ivy:resolve] found org.cleartk#cleartk-test-util;0.2-SNAPSHOT in local
[ivy:resolve] jdom#jdom;1.1 is relocated to org.jdom#jdom;1.1. Please update
your dependencies.
[ivy:resolve] found jdom#jdom;1.1 in maven.org
[ivy:resolve] found org.jdom#jdom;1.1 in maven.org
[ivy:resolve] downloading
/Users/phwetzler/workspace/DLS/DLS/lib/org.cleartk/cleartk-test-util/0.2-SNAPSHOT/cleartk-test-util-0.2-SNAPSHOT.jar
...
[ivy:resolve] .. (24kB)
[ivy:resolve] [SUCCESSFUL ]
org.cleartk#cleartk-test-util;0.2-SNAPSHOT!cleartk-test-util.jar (2ms)
[ivy:resolve] downloading
http://repo1.maven.org/maven2/org/jdom/jdom/1.1/jdom-1.1.jar ...
[ivy:resolve]
.......................................................................................................
(149kB)
[ivy:resolve] .. (0kB)
[ivy:resolve] [SUCCESSFUL ] org.jdom#jdom;1.1!jdom.jar (2188ms)
[ivy:resolve] :: resolution report :: resolve 4862ms :: artifacts dl 2193ms
---------------------------------------------------------------------
| | modules || artifacts |
| conf | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
| default | 3 | 3 | 3 | 0 || 2 | 2 |
---------------------------------------------------------------------
BUILD SUCCESSFUL
Total time: 7 seconds$ ant resolve
Buildfile: build.xml
resolve:
[ivy:configure] :: Ivy 2.2.x-local-20091208210308 - 20091208210308 ::
http://ant.apache.org/ivy/ ::
[ivy:configure] :: loading settings :: file =
/Users/phwetzler/workspace/DLS/DLS/ivysettings.xml
[ivy:resolve] :: resolving dependencies ::
edu.colorado.dls#Quality;[email protected]
[ivy:resolve] confs: [default]
[ivy:resolve] jdom#jdom;1.1 is relocated to org.jdom#jdom;1.1. Please update
your dependencies.
[ivy:resolve] found jdom#jdom;1.1 in maven.org
[ivy:resolve] found org.jdom#jdom;1.1 in maven.org
[ivy:resolve] downloading
http://repo1.maven.org/maven2/org/jdom/jdom/1.1/jdom-1.1.jar ...
[ivy:resolve]
........................................................................................................
(149kB)
[ivy:resolve] .. (0kB)
[ivy:resolve] [SUCCESSFUL ] org.jdom#jdom;1.1!jdom.jar (1842ms)
[ivy:resolve] :: resolution report :: resolve 4854ms :: artifacts dl 1845ms
---------------------------------------------------------------------
| | modules || artifacts |
| conf | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
| default | 2 | 2 | 2 | 0 || 1 | 1 |
---------------------------------------------------------------------
BUILD SUCCESSFUL
Total time: 7 seconds$ ant resolve
Buildfile: build.xml
resolve:
[ivy:configure] :: Ivy 2.2.x-local-20091208210308 - 20091208210308 ::
http://ant.apache.org/ivy/ ::
[ivy:configure] :: loading settings :: file =
/Users/phwetzler/workspace/DLS/DLS/ivysettings.xml
[ivy:resolve] :: resolving dependencies ::
edu.colorado.dls#Quality;[email protected]
[ivy:resolve] confs: [default]
[ivy:resolve] found org.jdom#jdom;1.1 in maven.org
[ivy:resolve] found xerces#xercesImpl;2.6.1 in maven.org
[ivy:resolve] found xerces#xmlParserAPIs;2.6.1 in maven.org
[ivy:resolve] found org.jdom#jaxen-core;1.0-FCS in maven.org
[ivy:resolve] found org.jdom#jaxen-jdom;1.0-FCS in maven.org
[ivy:resolve] found org.jdom#saxpath;1.0-FCS in maven.org
[ivy:resolve] found xalan#xalan;2.5.D1 in maven.org
[ivy:resolve] downloading
http://repo1.maven.org/maven2/org/jdom/jdom/1.1/jdom-1.1.jar ...
[ivy:resolve]
....................................................................................................
(149kB)
[ivy:resolve] .. (0kB)
[ivy:resolve] [SUCCESSFUL ] org.jdom#jdom;1.1!jdom.jar (1335ms)
[ivy:resolve] downloading
http://repo1.maven.org/maven2/xerces/xercesImpl/2.6.1/xercesImpl-2.6.1.jar ...
[ivy:resolve]
...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
[ivy:resolve] ................................ (936kB)
[ivy:resolve] .. (0kB)
[ivy:resolve] [SUCCESSFUL ] xerces#xercesImpl;2.6.1!xercesImpl.jar (3613ms)
[ivy:resolve] downloading
http://repo1.maven.org/maven2/xerces/xmlParserAPIs/2.6.1/xmlParserAPIs-2.6.1.jar
...
[ivy:resolve]
.......................................................................................
(121kB)
[ivy:resolve] .. (0kB)
[ivy:resolve] [SUCCESSFUL ] xerces#xmlParserAPIs;2.6.1!xmlParserAPIs.jar
(2220ms)
[ivy:resolve] downloading
http://repo1.maven.org/maven2/org/jdom/jaxen-core/1.0-FCS/jaxen-core-1.0-FCS.jar
...
[ivy:resolve]
.................................................................................................................
(157kB)
[ivy:resolve] .. (0kB)
[ivy:resolve] [SUCCESSFUL ] org.jdom#jaxen-core;1.0-FCS!jaxen-core.jar
(2316ms)
[ivy:resolve] downloading
http://repo1.maven.org/maven2/org/jdom/jaxen-jdom/1.0-FCS/jaxen-jdom-1.0-FCS.jar
...
[ivy:resolve] ..... (5kB)
[ivy:resolve] .. (0kB)
[ivy:resolve] [SUCCESSFUL ] org.jdom#jaxen-jdom;1.0-FCS!jaxen-jdom.jar
(1978ms)
[ivy:resolve] downloading
http://repo1.maven.org/maven2/org/jdom/saxpath/1.0-FCS/saxpath-1.0-FCS.jar ...
[ivy:resolve] ................. (23kB)
[ivy:resolve] .. (0kB)
[ivy:resolve] [SUCCESSFUL ] org.jdom#saxpath;1.0-FCS!saxpath.jar (2046ms)
[ivy:resolve] downloading
http://repo1.maven.org/maven2/xalan/xalan/2.5.D1/xalan-2.5.D1.jar ...
[ivy:resolve]
........................................................................................................................................................................................................................................................................................................................................................
[ivy:resolve]
................................................................................................................................................................................................
[ivy:resolve]
...............................................................................................................................................................................................
[ivy:resolve]
..........................................................................................................................
[ivy:resolve] .. (1260kB)
[ivy:resolve] .. (0kB)
[ivy:resolve] [SUCCESSFUL ] xalan#xalan;2.5.D1!xalan.jar (8021ms)
[ivy:resolve] :: resolution report :: resolve 19690ms :: artifacts dl 21541ms
---------------------------------------------------------------------
| | modules || artifacts |
| conf | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
| default | 7 | 7 | 7 | 0 || 7 | 7 |
---------------------------------------------------------------------
BUILD SUCCESSFUL
Total time: 42 seconds<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="build" name="DLS" xmlns:ivy="antlib:org.apache.ivy.ant">
<target name="resolve">
<ivy:configure file="ivysettings.xml" />
<ivy:resolve file="ivy.xml" />
</target>
<target depends="resolve" name="retrieve">
<ivy:retrieve pattern="bin/lib/[artifact]-[revision].[ext]" />
</target>
</project>
<ivysettings>
<settings defaultResolver="maven.org" />
<resolvers>
<filesystem name="local">
<ivy pattern="${ivy.settings.dir}/lib/[organisation]/[module]/[revision]/[module]-[revision].pom"/>
<artifact pattern="${ivy.settings.dir}/lib/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/>
</filesystem>
<url name="maven.org" m2compatible="true">
<ivy pattern="http://repo1.maven.org/maven2/[organisation]/[module]/[revision]/[module]-[revision].pom"/>
<artifact pattern="http://repo1.maven.org/maven2/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/>
</url>
</resolvers>
<modules>
<module organisation="org.cleartk" resolver="local" />
</modules>
</ivysettings>
<ivy-module version="2.0">
<info organisation="edu.colorado.dls" module="Quality"/>
<dependencies>
<dependency org="org.cleartk" name="cleartk-test-util" rev="0.2-SNAPSHOT" />
<!-- <dependency org="jdom" name="jdom" rev="1.1"/> -->
<!-- <dependency org="org.jdom" name="jdom" rev="1.1"/> -->
</dependencies>
</ivy-module>