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 dh...@lexmark.com on 2007/04/25 18:18:03 UTC

Newbie - Maven 1, Cruise Control and Dependency Management... + Ivy?

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.

cheers,

David


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

Posted by Dmitriy Korobskiy <dk...@gmail.com>.
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>


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

Posted by Xavier Hanin <xa...@gmail.com>.
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
>
>


-- 
Learn Ivy at ApacheCon: http://www.eu.apachecon.com/
Manage your dependencies with Ivy!
http://incubator.apache.org/ivy/