This looks fine to me. - James
Garrett Rooney wrote: > 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. > > -garrett
