TODO list
---------
- 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]



Reply via email to