I wanted to update everyone on the work done over the weekend on the
new Maven build.

First of all, a big "Thank You" to Bernd and Bruno who put in a lot of
time on this.  Bernd did a lot of the POM work and Bruno put in a lot
of time converting over most of our website.

The jars are building fine with a simple mvn install command run from
myfaces/build.  You will also need Maven 2.0.1 (2.0 gives you a rather
cryptic NPE.)

Also, several of you have asked about the tests being skipped.  Bernd
added that intentionally because not all of the unit tests were
working properly.  A very high priority TODO will be to get these
working.  I added this to our Committers Wiki[1].  I believe there
were several problems related to the encryption unit tests.  Perhaps
we could enable 99% of the tests and just skip these?

Now for the questions/issues as I see them ...

We have two high level POM's.  One is in build.  That is the POM that
calls all of the modules.  The other is in api.  This one is the
parent to the rest of the POM's. Bernd thought this was the best place
to put it b/c the api project has no other dependencies on other
modules in the project.  I think we should probably reconsider that
decision now though.  Its not very intuitive.

I have a few thoughts about the parent POM.  Couldn't we move most of
the stuff that is inheritable to build/pom.xml?  My thinking is that
you can do without the mailing lists, etc. in your sites if you are
just building tomahawk (and only tomahawk) on your local machine (for
some reason.)  Most of the global information in the parent POM seems
to be related to the site.  Will a pom build if it cannot find the
parent pom?  (Say you just checkout tomahawk ...)

Also, the versions should be defined at the subproject level.  So api,
impl, commons, etc. all have their own versions defined.  The pom's
underneath them (like tomahawk/tomahawk/pom.xml) can inherit from the
subproject pom but they shouldn't inherit from the master pom.  I'm
thinking the master pom (build/pom.xml) have a version like
1.0.0-FINAL or something like that.  We *never* change the version of
the parent.  So as the versions of the subprojects change and get out
of sync with each other (on purpose) and as we tag and branch, it
doesn't matter.  The parent ref is always good.

One implication is that if we go back in time to generate the website
for a tagged version it will show the current contributor list, etc. 
I think that's perfectly fine but its an implication to be aware of. 
This also seems to be an argument for *not* defining dependencies in
the master pom.

Anyways, we need to get the unit tests back up and running and we need
to sort out this parent pom business.  Any thoughts?

Sean

[1] http://wiki.apache.org/myfaces/Maven2_Migration

Reply via email to