ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Philipp Wetzler <phwetz...@gmail.com>
Subject Re: relocation of transitive dependency
Date Thu, 17 Dec 2009 04:40:21 GMT
Maarten,

thanks a lot for your help! I repeated the experiments with the most recent
version from SVN and everything works as it should. Thanks for clearing up
the issue of jdom's dependencies as well -- I hadn't realized that they were
optional.

Philipp


On Wed, Dec 16, 2009 at 3:58 PM, Maarten Coene <maarten_coene@yahoo.com>wrote:

> Hi Philipp,
>
> thanks for the detailed description of the problem :-)
> I've committed some changes in SVN trunk that should fix your issues.
>
> Could you please give it a try to see if your problems has been fixed by my
> changes?
>
> Regarding the dependencies of jdom: they are all marked as optional. This
> means that in your experiment 1 and 2 you still won't get these (Ivy won't
> download the optional dependencies of transitive maven dependencies).
> However, experiment 3 should now also get these optional dependencies.
>
> thanks,
> Maarten
>
>
> ________________________________
> From: Philipp Wetzler <phwetzler@gmail.com>
> To: ivy-user@ant.apache.org
> Sent: Wed, December 16, 2009 8:57:54 PM
> Subject: Re: relocation of transitive dependency
>
> 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 <phwetzler@gmail.com>
> wrote:
>
> On Tue, Dec 15, 2009 at 4:55 PM, Maarten Coene <maarten_coene@yahoo.com>
> 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 <phwetzler@gmail.com>
> >>>>To: ivy-user@ant.apache.org
> >>
> >>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 <
> maarten_coene@yahoo.com>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 <philipp.wetzler@colorado.edu>
> >>>>> To: ivy-user@ant.apache.org
> >>>>> 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
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>
> >>
> >>
> >>
> >>
> >
>
>
>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message