abdera-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Garrett Rooney" <roo...@electricjellyfish.net>
Subject Working in progress on using Ivy for the ant build
Date Sun, 28 Jan 2007 15:27:17 GMT
So, one of the things I've been playing around with in my
oh-so-copious spare time is making the Abdera build use Ivy to
download its dependencies instead of the current hardcoded system
we've currently got in the ant build.  I've sort of been feeling my
way around, as I haven't been able to find very many good examples of
how to set up multiple module builds in a single source tree with Ivy,
but yesterday I came up with something pretty nice, so I figured I'd
post a patch to see what people think.

Note that this isn't done.  It only builds the core, parser, protocol,
client, and extensions modules, and it doesn't have anything set up
for publishing releases, doing retroweaver junk, etc.

It's also not taking full advantage of Ivy's abilities, we should be
using different configurations for things like saying that the junit
stuff is only needed for tests, and splitting out big dependencies
like jaxen (which appears to pull in the whole bloody world) so that
you only get that if you're actually using it.  Finally, there's too
much duplication of code in the module's build.xml files, I'd like a
solution to that that either generates them from a common template or
has them pull in the code they need from an external source, but I
haven't gotten around to thinking about the best way to do that (it's
just screaming for the import ant task, but that has "Beta Code, Stay
Away" written all over it).

A bit about how the build is structured.  There's a top level
build.xml file that just handles bootstrapping ivy and then calls each
module's build.xml.  In each module there's the actual logic for doing
the builds and for handling dependency resolution.  When each module's
build is complete it is published into a local ivy repository so that
modules that depend on it can access it.  Assuming that you've
bootstrapped ivy once it's possible to build modules independently of
each other (just cd into core and type 'ant', for example), although
you need to make sure its dependencies have already been built.

The only things that actually vary for each module is the name of the
project in the build.xml file and it's ivy.xml file, which is where
you actually specify dependencies and things like that.  The top level
ivyconf.xml configures Ivy to use the maven2 repos at repo1.maven.org
and the incubator maven2 repository on people.apache.org, although at
this point that isn't used for anything, it's just a hold over because
the project I copied this logic from (the speedyfeed lab) used that to
depend on Abdera itself

Anyway, here's the current work in progress patch, in case anyone else
is curious.  I'm not sure when I'm going to find some free time to
continue this work, but hopefully it'll happen eventually.  Let me
know what you think.


  • Unnamed multipart/mixed (inline, None, 0 bytes)
View raw message