ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Garima Bathla <>
Subject Re: Better Determine conflicting dependencies
Date Wed, 16 Dec 2009 00:45:57 GMT
To my best knowledge, there is something called conflict-manager that you
can configure in ivysettings to handle conflicts the way you will want them
to be handled

And you can always run ant task repreport to find out down-stream

I am not sure about up-stream dependency ( that just means going and
searching for ivy.xml randomly and looking if it refers to a dependency or


And for your other queries

On Tue, Dec 15, 2009 at 4:34 PM, Carl Myers <> wrote:

> Hey all,
> It seems like a common problem (the way we are using ivy) to run into
> conflicts.  Unfortunately, if your dependency tree looks like this:
> A: B C D E
> C: F G
> G: H-1.0
> E: Z
> Z: H-1.1
> Here I have a conflict and get the message "H-1.0 (required by G) conflicts
> with H-1.1 (required by Z)".
> Unfortunately, I am building A, and I have no clue where H comes from. If I
> look at my ivy.xml (the only ivy.xml that I have checked out and handy) all
> I see are A, B, C, D, and E.  I have potentially never heard of Z or G, nor
> do I care.  Some dependency changed and boned me, and I need more
> information than that to figure out how to fix it.
> Specifically, I need the all packages on the path to the "lowest common
> ancestor" of the two conflicting packages in my dependency tree.  In this
> example, I would like to see:
> H-1.1 (A->E->Z->H-1.1) conflicts with H-1.0 (A->C->G->H-1.0)
> This should include the version numbers too, I am just leaving them out for
> clarity and brevity here.  The two lists of dependencies above are the two
> paths from the lowest common ancestor to each respective conflicting
> package.  It also happens to be a conprehensive list of *every* package I
> might potentially edit to fix this problem, giving me the data I need to
> analyze the problem.  In this example, the lowest common ancestor was A, the
> package I was working on, but you can easily come up with examples where
> even the LCA will be some package you have never heard of - but armed with
> that path, you can start your investigation and figure out what changed, and
> what needs to change to fix it.
> Additionally, presently, Ivy bails out as soon as it finds a single
> dependency conflict, when there may be more than one.  This means you make
> some decision (like "I am reverting Z to H-1.0") and fix that problem, only
> to realize some other package (Maybe, in this example, F) also depends on
> H-1.1.  How frustrating!
> My questions are as follows:
> 1. Is there some "tell me more" setting which will make Ivy print out more
> info like I am asking for, or list all conflicts it can find instead of
> dying on the first one?
> 2. If I want to write a tool to analyze dependencies, for example:
> getDownstreamDependencies(pkgName, pkgVersion)
> getUpstreamDependencies(pkgName, pkgVersion)
> getDirectDownstreamDependencies(pkgName, pkgVersion)
> Is there some library which can parse ivy.xml files which can easily be
> used outside the ivy code base?  I haven't looked the code yet but I thought
> I'd run it by you guys before I tried anything drastic
> 3. RFC?  (Requests for comments) - should I consider submitting a patch for
> Ivy to do what I described above?
> Thanks!
> --
> Carl Myers
> Palantir Technologies | Internal Tools Software Engineer

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