Hi, Xavier Re: your e-mail from Wednesday, April 25, 2007 12:40 PM > On 4/25/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> 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>
