ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Maarten Coene <maarten_co...@yahoo.com>
Subject Re: compile, runtime and interface configuration
Date Wed, 18 Apr 2007 21:24:09 GMT
If I remember things correctly, here is how it works.

When Ivy parses your Ivy file, it will create (internally) modify the configuration mapping
of your dependencies.
For instance, say you have:

<configurations defaultconfmapping="conf1->other1;conf2->other2">
    <conf name="conf1" />
    <conf name="conf2" extends="conf1" />
</configurations>
<dependencies>
    <dependency name="other-module" conf="conf1" />
</dependencies>

When Ivy parses this file, it will construct the following dependency (in-memory only):
    <dependency name="other-module" conf="conf1->other1" />


So, if you now resolve the conf2 configuration, you will only get the other1 dependencies
of your other-module.

But here comes the confmappingoverride to the rescue ;-) When you set this attribute to true,
Ivy will construct the following dependency in memory:
    <dependency name="other-module" conf="conf1->other1;conf2->other2" />
As you can see, the defaultmappings of the extending configurations are also added (although
you didn't explicitly defined them)



When you now resolve the conf2 configuration, you'll get the other2 dependencies of your other-module.

I hope this helps you understanding the impact of this attribute

regards,
Maarten


----- Original Message ----
From: Gilles Scokart <gscokart@gmail.com>
To: ivy-user@incubator.apache.org
Sent: Wednesday, April 18, 2007 9:30:14 AM
Subject: RE: compile, runtime and interface configuration

Unfortunately, the thread is not available anymore.

Could you explain "the extending configurations will override the mappings
of the configurations they extend from".   Because for the moment I'm not
sure that "I understand the implications" ;-).


Thanks,
Gilles


> -----Original Message-----
> From: Maarten Coene [mailto:maarten_coene@yahoo.com]
> Sent: mercredi 18 avril 2007 9:01
> To: ivy-user@incubator.apache.org
> Subject: Re: compile, runtime and interface configuration
> 
> Gilles,
> 
> you have to set the confmappingoverride property to true to have this
> behaviour.
> See http://incubator.apache.org/ivy/doc/ivyfile/configurations.html
> 
> I think this will solve your problem...
> 
> regards,
> Maarten
> 
> ----- Original Message ----
> From: Gilles Scokart <gscokart@gmail.com>
> To: ivy-user@incubator.apache.org
> Sent: Wednesday, April 18, 2007 8:31:42 AM
> Subject: RE: compile, runtime and interface configuration
> 
> Ok, here is a simplified example:  A module 'User' depends on a module
> 'Service'.  The module 'service' use in its interface some classes of the
> module 'datatype', and use internally the module 'serviceImpl'
> 
> Module 'user' :
> <dependencies>
>     <dependency org="X" name="service" rev="x" conf="compile"/>
> </dependencies>
> 
> 
> Module 'service' :
> <dependencies>
>     <dependency org="X" name="datatype" rev="x" conf="interface"/>
>     <dependency org="X" name="serviceImpl" rev="x" conf="compile"/>
> </dependencies>
> 
> 
> 
> When I resolve the dependencies user, I would like to have
> - in conf compile : service , datatype
> - in conf runtime : service , datatype , serviceImpl
> 
> 
> However, with the configuration :
> <configurations
>     defaultconfmapping="runtime -> runtime(default);
>                         interface -> interface(default);
>                         compile -> interface(default)">
> 
>     <conf name="compile" extends="interface"/>
>     <conf name="runtime" extends="compile"/>
>     <conf name="interface"/>
> </configurations>
> 
> I think I have the configuration runtime containing only service and
> datatype.
> 
> 
> Gilles
> 
> 
> 
> > -----Original Message-----
> > From: Xavier Hanin [mailto:xavier.hanin@gmail.com]
> > Sent: mardi 17 avril 2007 17:28
> > To: ivy-user@incubator.apache.org
> > Subject: Re: compile, runtime and interface configuration
> >
> > On 4/17/07, Gilles Scokart <gscokart@gmail.com> wrote:
> > >
> > >
> > >
> > >
> > >
> > > Hi,
> >
> >
> > Hi,
> >
> > I try to to define a system that use three types of configurations :
> > > compile, runtime and interface.
> > >
> > >
> > >
> > > The compile dependencies are the one required to compile my modules.
> > >
> > > The runtime dependencies are the one required to run my modules.
> > >
> > > The interface dependencies are dependencies that I use in the
> interface
> > of
> > > my module.  The means that the users of my module should transitively
> > > inherit those interfaces in their compile (and runtime) dependencies.
> > >
> > >
> > >
> > >
> > >
> > > Here is how I tried to declare those configurations :
> > >
> > >
> > >
> > > <configurations  defaultconfmapping=" runtime -> runtime(default);
> > >
> > >                                       interface -> interface(default);
> > >
> > >                                       compile -> interface(default)">
> > >
> > >
> > >
> > >             <conf name="compile" extends="interface" description="the
> > > compile-time dependencies" />
> > >
> > >             <conf name="runtime" extends="compile " description="The
> > > runtime
> > > configuration"/>
> > >
> > >             <conf name="interface" description="The interface
> > > configuration"/>
> > >
> > > </configurations>
> > >
> > >
> > >
> > >
> > >
> > > When I have A depends in B (compile dep) and B depends on C (compile
> > dep),
> > > I
> > > was expecting to have implicitly A depends on C (runtime dep).  But it
> > > seems
> > > not to be.
> >
> >
> > Could you be more precise when you talk about your deps configurations
> > (giving the dependency element of each ivy file), because I'm not sure
> how
> > you use the defaultconfmapping you have defined.
> >
> > Xavier
> >
> > I have the impression that ivy first resolve the compile dependencies
> > > transitively, then resolve runtime dependencies transitively and add
> the
> > > one
> > > obtained by the compile dep resolution.
> >
> >
> >
> > Is my understanding correct?  What are the other alternative to do what
> I
> > > want to do?  Am I forced to flag all compile dependencies also as
> > runtime
> > > dependencies?
> > >
> > >
> > >
> > >
> > >
> > > Thanks for your help.
> > >
> > >
> > >
> > > Gilles
> > >
> > >
> > >
> > >
> >
> >
> > --
> > Learn Ivy at ApacheCon: http://www.eu.apachecon.com/
> > Manage your dependencies with Ivy!
> > http://incubator.apache.org/ivy/
> 
> 
> 
> 
> 
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com





__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Mime
View raw message