You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-user@ant.apache.org by Andreas Axelsson <an...@combination.se> on 2010/03/04 09:34:02 UTC

Partial transient resolve?

I've got some modules which are only required during development and I would like to mark them as such so that they are not pulled in as transient dependencies even if a project asks for them.

Example:

A depends on B, always
B depends on C, always
B depends on D, but only during development

Running retrieve on A with transient dependencies enabled, I would like to get B and C, but not D. What would be the approach to use?

All my modules have the same configs available, build, dev and runtime. Build is effectively the same as runtime, but the resolve chain is "build->dev(*);dev->runtime(*);runtime->runtime(*)" so that a module is built using the "build" config, making it resolve it's dependencies in the "dev" config and transient dependencies in the "runtime" config.

I think what I want is for A to look at the transient flag of B's dependencies and ignore them if it's false, even if it's true for A itself. Right now it only looks at the flag in the top level Ivy config, which makes it impossible to selectively ignore D but still get C. Or at least that's what my tests are indicating.

A real life example might be:
A and B depends on different versions of a testing framework during development. If transient dependencies are resolved, B might override the version A requires. But still, B might also require C, that I want to resolve, so I cannot completely turn off transient dependencies and I don't want A to have to know about C.

Thanks for any insight.
/axl


RE: Partial transient resolve?

Posted by Andreas Axelsson <an...@combination.se>.
Obviously I mean transitive wherever I write transient... Doh!

/axl

> -----Original Message-----
> From: Andreas Axelsson [mailto:andreas.axelsson@combination.se]
> Sent: den 4 mars 2010 09:34
> To: ivy-user@ant.apache.org
> Subject: Partial transient resolve?
> 
> I've got some modules which are only required during development and I
> would like to mark them as such so that they are not pulled in as
> transient dependencies even if a project asks for them.
> 
> Example:
> 
> A depends on B, always
> B depends on C, always
> B depends on D, but only during development
> 
> Running retrieve on A with transient dependencies enabled, I would like
> to get B and C, but not D. What would be the approach to use?
> 
> All my modules have the same configs available, build, dev and runtime.
> Build is effectively the same as runtime, but the resolve chain is
> "build->dev(*);dev->runtime(*);runtime->runtime(*)" so that a module is
> built using the "build" config, making it resolve it's dependencies in
> the "dev" config and transient dependencies in the "runtime" config.
> 
> I think what I want is for A to look at the transient flag of B's
> dependencies and ignore them if it's false, even if it's true for A
> itself. Right now it only looks at the flag in the top level Ivy
> config, which makes it impossible to selectively ignore D but still get
> C. Or at least that's what my tests are indicating.
> 
> A real life example might be:
> A and B depends on different versions of a testing framework during
> development. If transient dependencies are resolved, B might override
> the version A requires. But still, B might also require C, that I want
> to resolve, so I cannot completely turn off transient dependencies and
> I don't want A to have to know about C.
> 
> Thanks for any insight.
> /axl