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 Dmitriy Korobskiy <dk...@gmail.com> on 2007/04/30 23:25:41 UTC

Re[2]: Newbie - Maven 1, Cruise Control and Dependency Management... + Ivy?

Hi, Xavier
Re: your e-mail from Wednesday, April 25, 2007 12:40 PM

> On 4/25/07, dhay@lexmark.com <dh...@lexmark.com> wrote:
>> Hi,
>>
>> We are currently using Maven 1 with Cruise Control, and are running into
>> CC's lack of Dependency Management.
>>
>> We have multiple projects, many, but not all, of which inherit from a
>> common parent project.  We also have multiple versions of these projects.
>>
>> Say we have the parent Project A upon which Projects B, C, D and E all
>> depend.  Then we have Project F which depends on B, C & D.  Needless to
>> say, CC has no idea that it needs to build A, B, C, D, E and then F.
>>
>> I'm completely new to Ivy - can it help us here?  Can it handle all these
>> dependencies, including different versions of the Projects?  eg F v 1
>> depends on B, C, D version 1, but F v2 depends on B v1, C v2 & D v1.

> Quite a long time ago there was an Ivy plugin for CC. The problem is
> that this plugin is not maintained anymore, and works only with rather
> old CC version (2.3 if I remember well). An Ivy user also wrote some
> kind of plugin for CC integrating Ivy in another way. You can find
> details about that here:
> http://www.jaya.free.fr/ivycruise.html

> Even if it doesn't work out of the box for you, this can at least be a
> good basis to implement dependent builds in CC.

> Now for the pure Ivy part. In Ivy you can define your dependencies
> like you expressed, no problem. I guess that by v1 and v2 you are
> talking about branches more than static versions (otherwise I see no
> value with dependent builds, if dependencies are static). Ivy supports
> branches pretty well [1], so no problem with that.

> But if you are satisifed with your build environment and just want to
> use Ivy to introduce dependent builds in CC, maybe you can even use
> Ivy pluggable metadata parser mechanism. Indeed Ivy supports maven 2
> metadata out of the box, so supporting your maven 1 metadata shouldn't
> be too complex to handle.

> HTH,

> Xavier

> [1] http://incubator.apache.org/ivy/doc/ivyfile/dependency.html

>>
>> cheers,
>>
>> David
>>
>>

David,- I believe what you are asking for could be implemented quite simply via
CruiseControl's <buildstatus> modifications with some Ivy help, perhaps, but
without extra complications or the Cruise Ivy plug-in.

1. Create Cruise projects for your branches (F v1, F v2, C v1, C v2)
2. In your Cruise builds - publish project artifacts upon success into a local common
Ivy repository. Use Ivy's branch attribute or other means to distinguish
integration builds from releases.
3. Make F (Ivy-enabled) build consume appropriate (latest) B, C, D integration builds.
4. In CruiseControl config - use <buildstatus logdir="a log directory for C branch project"/>,
etc. in F's <modificationset>

As a result, after Cruise builds, say, a C branch successfully, a consuming F branch build would
kick off.

Dmitriy <1-127-441 @ICQ, DKroot @Skype, DKroot1 @AIM, dkroot1_at_gmail_dot_com @Google Talk>