Hi,

Some Turbine developers have been playing around with Maven over the
last few days, but I would like to formally introduce the little project
for those who don't know anything about it. I'll give a brief outline of
what Maven can provide and outline a little proposal to employ Maven's
use in all our build systems.

For the impatient you can view the Maven site which actually uses Maven
to produce everything you see:

http://jakarta.apache.org/turbine/maven/

This is a very quick first iteration but I would like to use the Maven
site as a use case. The question being: How quickly can you get to know
a project's inner workings by looking at the information provided by
Maven's generated build system (and the tasks provided within)?

Maven is really a direct result of trying to get a hold on all the
pieces of Turbine that have been decoupled over the last year. We have
quite a few pieces now and it is becoming increasingly difficult to keep
track and assess what state these projects are actually in.

Right now Maven provides the following things:

-> a generic build system that works from a project descriptor

-> a generic unit testing system that works from a project descriptor

-> document generation system that works from a project descriptor. this
includes javadocs and html

-> source cross referencing with links to javadocs. the code was lifted
from the alexandria project

-> source metrics provided by jdepend 

-> changlog document created from the output of 'cvs log'

-> update mechanism for a project

-> integration with Gump

A project descriptor looks something like the following:

http://cvs.apache.org/viewcvs/jakarta-turbine-maven/project.xml?rev=1.6&content-type=text/vnd.viewcvs-markup

With one of these project descriptors, and the source for your project
of course, you can get everything you see on the Maven site.

How is the project descriptor created you ask? Well we're working on
being able to analyze your source using a java parser and BCEL and
determine most of the dependencies and we will have a CLI tool and a GUI
tool to help you make a correct project descriptor. Once you have the
project descriptor you're all set.

What I would like to over the next week is to move the Turbine projects
toward using Maven so that we can get a grip on all the Turbine projects
as a whole. This will give us a view on all our projects that we
currently don't have: the documentation and cross ref'd source with
links to the javadoc should help people become more familiar with the
code more quickly and the metrics produced should help us to see a
clearer path to refactoring. Another important point to mention is the
Gump integration. If the Maven project descriptors are correct then the
generated Gump descriptors will be correct and we can avoid most of the
Gump problems we've had because we can eliminate the data entry aspect
of keeping the gump descriptors up-to-date.

There are a few issues left to deal with like how to integrate very
different run-time testing requirements into a generic build system but
I think we will work these out and I believe this will overall be a
benefit. We can also integrate Maven into the TDK so that people can
have the option to develop their projects in the same way Turbine does.
I believe the uniformity in the display of project information will only
be a boon. And as the build system improves it can be rapidly integrated
into a development environment because the build system is generated
from the project descriptor so you don't even have to store the build
system in CVS. Also because the project descriptor is a simple XML file
if the structure changes Maven can also provide a DVSL transformation to
keep project descriptors current.

There is a ways to go, but as a first iteration I think we have
something that is pretty good. I was surprise by the number of people
who have expressed interest and many patches and contributions have been
made in a very, very short period of time.

I would also like to make a special note of the effort of Pete Kazmier
who has done a stellar job at making the documentation you see and
keeping it updated. I would also like to thank Geir for getting all the
DVSL working and Jeff for getting metrics targets working. Thanks must
also go to Jauncarlo Arnez for donating the JRCS code and Tom Copeland
for the BCEL dep resolving code. Anyway I think this will be a great
thing for Turbine and I would like to get things rolling this week even
if it is only discussion and refinement of what currently exists in
Maven.

Any thoughts and feedback are welcome :-)


-- 
jvz.

Jason van Zyl
[EMAIL PROTECTED]

http://tambora.zenplex.org


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to