You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@roller.apache.org by Phillip Rhodes <mi...@cpphacker.co.uk> on 2008/02/12 20:31:47 UTC

Since we're talking about builds anyway

Since this issue is being discussed anyway, I thought I'd share some
more about this build system we created for OpenQabal.  It's "just ant"
(well, combined with Ivy) but there's a common.xml that includes all the 
useful tasks and has all the necessary inter-task dependencies setup. 
You just import that into the local build.xml, selectively override any 
tasks or properties that need to be overridden and BAM:
a nice consistent build, with transitive dependency management, 
sub-project dependencies managed, etc.  It's still "convention over
configuration" but we think our system A. makes it easier to
go against the convention if you need to, and B. just plain isn't
as complicated as Maven and doesn't have so much BFM.

And just for the sake of argument (heh), if anybody is interested
in looking at what we've done, take a quick peek
at common.xml and keras.properties here:

<https://openqabal.dev.java.net/source/browse/openqabal/trunk/keras/>

and then the ivy-build.xml and ivy-build.properties from here:

<https://openqabal.dev.java.net/source/browse/openqabal/trunk/roller_41_local/apps/weblogger/>

That's one of the more complicated cases, since we had to use some
of our post-task hooks and overriding to make certain things happen
(running openjpac task, moving some files around, etc).  But then
contrast to the ivy-build.xml from our "utils" project which is
literally two meaningful lines:

<https://openqabal.dev.java.net/source/browse/openqabal/trunk/utils/ivy-build.xml?rev=248&view=log>

Now am I suggesting that Roller should adopt this? Not really since the 
same point stands as with the M2 discussion: the current build works. 
BUT... Dave, if you ever do decide to revisit the Roller build, you're
welcome to adopt this if you'd like.  :-)  The main advantage we
get from it, again, is the dependency management and the inter-project
dependency stuff.  But that's arguably only relevant to us because of 
the way we bundle Roller with some other stuff in an EAR file.


TTYL,


-- 
Phillip Rhodes
Chief Architect - OpenQabal
https://openqabal.dev.java.net