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

Reply via email to