Thank you all for actively pursuing this issue. I need to take a step back from my feature request for a moment, because I just realized my situation is even more complicated than I had thought.
Forgive me for going back to my coffee analogy. In addition to something like mocha-tall-iced.jar that I only want delivered in that combination situation, I also have something like mocha-tall.jar that I simultaneously want delivered whether it's iced or hot. And to top all that off, I also have something called mocha.jar that I likewise simultaneously want delivered regardless of the size or temperature. So I need to come up with a palette of Ivy confs and a combination of them to specify to deliver me the following artifacts: mocha.jar mocha-tall.jar mocha-tall-iced.jar Well, I know how to do this the hard way: <conf name="mocha" /> <conf name="mocha-tall" extends="mocha" /> <conf name="mocha-tall-iced" extends="mocha-tall" /> Then in my dependency module, I would ask for "mocha-tall-iced". Only problem: now I'm stuck with 4+16+32 Ivy confs. There's got to be a better way. (Again, I realize that I'm producing a proliferation of artifacts regardless.) It may very well be that I wind up doing some serious re-factoring and get rid of one of my dimensions. I'll also take a second look at configuration groupings. Regards, Garima. On Wed, Jul 29, 2009 at 4:09 PM, Mitch Gitman <[email protected]> wrote: > Shawn, I think your last paragraph really captures the fundamental > difference between your use case and the one I'm facing (which parallels > the > use case Garima broached): > I don't understand Garima's request as putting the intersection logic into > the <publications> section of the ivy.xml file like: <artifact > name="art1d" > type="dll" conf="windows+debug"/> means that the ONLY way a consumer can > get > this artifact is by specifying "default->windows+debug" in the > <dependencies> section. This prevents me from getting all windows > artifacts > or all debug artifacts. It just doesn't make sense to me. > > For me, being able to get "ALL Windows artifacts" or "ALL Windows OR debug > artifacts" would be at best an academic exercise. As a practical matter, > though, the simple ability to do this is trouble. The simple inability to > express intersection-only means that I can't communicate in Ivy the true > semantics of my Ivy module. > > In other words, I really do have artifacts that should only be available in > the intersection of certain confs of their Ivy module. Being able to get > unions containing these particular artifacts does me no good, but it does > potentially do me harm. > > To put things in simple terms, what Shawn asked for was to make the > following possible on the *consumer *Ivy module: > if (A && B) > In addition to: > if (A || B) > > What Garima is asking for—and what I'm seconding—is to make the same > possible on the *producer *Ivy module. > > On Wed, Jul 29, 2009 at 3:15 PM, Shawn Castrianni < > [email protected]> wrote: > > > 1. Yes, I agree that adding what Garima wants will not compromise my use > > case. I just haven't been convinced why Garima is requesting this. > Either > > Garima is not understanding configurations in general (which might be the > > case as Garima admitted not knowing about the '@' character) or you are > not > > understanding configurations in general (which might be the case based on > > your comment that "windows,debug" is inaccurate) or I am not > understanding > > your use case. > > > > 2. "The following, by itself, is inaccurate: <artifact name="art1d" > > type="dll" conf="windows,debug" />" > > > > How can you say this is inaccurate? I am thinking you are getting > confused > > about configurations (or maybe I am). The conf attribute of an artifact > is > > simply a comma delimited list of all configuration names that this > artifact > > is applicable for. The art1d.dll is a windows related file so it is > > definitely applicable for the windows configuration. The art1d.dll is a > > debug version of the dll so it is definitely applicable for the debug > > configuration. The "windows,debug" does NOT mean union in this section > of > > the ivy.xml file where the artifacts are defined. > > > > It is in the <dependencies? section of the ivy.xml file where > > "windows,debug" would mean union. So the comma notation of > configurations > > means two different things depending on what section of the ivy.xml you > are > > talking about. In the <publications> section, the comma doesn't mean > > anything. It is just a delimiter separating configuration names for all > of > > the configurations that this artifact is applicable for. In the > > <dependencies> section, the conf mapping attribute like > > "default->windows,debug" means the default configuration of my current > > module is dependent on BOTH (UNION) of the windows and debug > configurations > > of the dependent module. > > > > IVY configurations are just a way to subset all the artifacts of a module > > since you may not want all artifacts of a module all the time. Sometimes > > you just want all windows artifacts so you would use the conf mapping in > the > > <dependencies> section as "default->windows". Sometimes you just want > all > > debug artifacts so you would use the conf mapping in the <dependencies> > > section as "default->debug". Sometimes you just want the windows debug > > artifacts so you would use the new intersection capability in the > > <dependencies> section as "default->windows+debug". It is purely a > download > > efficiency enhancement for me. Before the intersection capability, I > would > > have to use "default->windows" and then manually delete the non-debug > > artifacts. But even with that, I had to wait for IVY to download them > into > > the cache. Over a slow network line, this can waste a lot of time for > > artifacts that are just going to be deleted manually. > > > > I don't understand Garima's request as putting the intersection logic > into > > the <publications> section of the ivy.xml file like: <artifact > name="art1d" > > type="dll" conf="windows+debug"/> means that the ONLY way a consumer can > get > > this artifact is by specifying "default->windows+debug" in the > > <dependencies> section. This prevents me from getting all windows > artifacts > > or all debug artifacts. It just doesn't make sense to me. > > > > --- > > Shawn Castrianni > > > > >
