---------
- trial gump integration (first run tonite)
- get you guys to test things and play around, make a few suggestions, complain
- get a green light on the new api/impl seperation I put in place
- copy sourcefiles over on the server from the old to the new locations (target date: sunday, unless you guys are still uncomfortable with maven :D)
- integrate PGP signing and basic key management using <ant:exec/>
- get maven-forrest-plugin committed and uploaded to ibiblio
- refactor the huge buildsystem scripts into a more reusable maven-avalon-build-plugin or something like that
- more docs
- more tests
- setup reactor builds (so you can do `cd fortress; maven dist` to build fortress and all subprojects, for example)
I would like to get all this done in a week or two. It is probably easiest if I just do most stuff, but I really do need everyone to take a look and try things out. Otherwise we fall in the same trap we did with excalibur: a state of the art build system that only 2 people could maintain.
Longer term:
- fix the maven-gump-plugin and refactor the buildsystem to use it
- figure out what to do about automated site management. I think forrestbot will still be able to (or easily adjusted to) do automated publishing, but I would like javadoc publishing, test report publishing, etc etc, everything automated.
- setup component builds.....working on that already...
bash-2.05b$ pwd /mnt/data/home/lsimons/cvs/avalon-new/avalon-components bash-2.05b$ ls cornerstone-connection excalibur-compatibility excalibur-logger cornerstone-datasource excalibur-configuration excalibur-monitor cornerstone-event excalibur-datasource excalibur-pool cornerstone-rmification excalibur-event excalibur-sourceresolve cornerstone-scheduler excalibur-extension excalibur-store cornerstone-sockets excalibur-i18n excalibur-thread cornerstone-store excalibur-instrument excalibur-xfc cornerstone-threads excalibur-lifecycle excalibur-xmlutil cornerstone-xml excalibur-loader pending-removal
but actually writing all the POMs is a terribly unsexy job (yes, even more unsexy than build systems!).
Rationale --------- Why do this?
maven is way more powerful than ant for a few reasons:
- scriptable. Jelly is a fully functional (if awkward) scripting language and you can just use it everywhere. Furthermore, you can transparently move a goal (maven version of ant's "target") from a maven.xml file to some other scriptfile to a jelly-based plugin to java sources, without having to change how you use
- workflow. there's <preGoal/>, <postGoal/> and <attainGoal/>, which are immensely useful.
- sensible data seperation. The maven project object model is not perfect, but seperating it from the build logic makes things a lot cleaner. It is much easier to share build logic by writing plugins (contrast to the forrest-targets.ent that ant uses, for example)
- dependency management on a sensible level. Dependency management in current maven (as opposed to maven-new) may be of limited flexibility, one can say that it "Just Works". Most java projects manage deps at the jar level, and maven does, too.
- kitchen sink. You can use *any* ant task within a jelly script within maven, as well as any jelly tag library, as well as loads of maven plugins, and many of them are provided with the distro or auto-installed when you install maven.
All this means that you might need one or two custom plugins (or like set up now, common jelly scripts, but that's actually less desirable) that will take some time to write and set up (especially since the only way to learn atm is by example), but that it is a lot easier to maintain components; usually all you need is a small project.xml (like, for example,
http://cvs.apache.org/viewcvs.cgi/*checkout*/avalon/fortress/tools/project.xml,
which actually fits on a single screen). And after that, building a release, generating and e-mailing an announcement, signing the releases, uploading to the right places looks like:
maven dist -Doverride.version=1.2 maven dist:sign -Doverride.version=1.2 # todo maven avalon:deploy -Doverride.version=1.2 maven site maven avalon:deploy-site # todo
Anyways, I was sceptical for a long time, but not anymore. Maven beta-9 provides a ***-load of features, is easy enough to install, stable enough to handle big projects, nearly backwards-compatible with ant (you can copy large chunks of an existing build.xml into a maven.xml file and it will work), and has a rapidly growing dev and user community.
enough blah-blah for today :D
g'night!
- LSD
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
