Jason and I have had some chats about this, but I thought it might be good 
to bring this up to a wider audience...


With more and more Apache projects (specifically incubator projects) using 
maven, there are a lot more people that are running into "issues" related 
to the apache requirements that are imposed on the build/release 
processes.   IMO, Maven itself should act as the "ideal model" for how to 
do those things.   Thus, when a question comes up, we can point to maven 
and say "look how they are doing it."     So the first question is:  does 
that make sense?

The problem is, Maven doesn't seem to do things "correctly", or at least 
makes things hard(er) to do correctly.

1) The LICENSE/NOTICE files in the META-INF dir of the jar - currently, 
none of the maven plugins do this at all.   I've seen projects handle 
this in a couple different ways.   Some projects put them in the 
src/main/resources... dir like other resources, but that kind of hides 
them.   Others put them in the same dir as the pom.xml and add a "." 
resource dir, but that breaks eclipse:eclipse.      Both have the issue 
of having BUNCHES of copies of the LICENSE and NOTICE files to maintain, 
which sucks.

There are a couple options.    One option that I understand is coming in 
2.1 is the ability to access stuff from the "parent" directory.   Shared 
resources type things.     Thus, a single copy could be used.  
Honestly, I'd like to see a "Apache-Maven" plugins (and a Incubator 
subclass plugin) that would automatically add those files automatically 
when possible.

One note: according to http://www.apache.org/legal/src-headers.html, all 
Apache releases done AFTER November 1, 2006 must have the license/notice 
files done correctly.   Thus, this item really needs to be taken care of 
REAL SOON NOW.


2) The release process - I honestly think Maven does this "wrong."   At 
least for incubator projects, we need to do the 
tagging/build/signing/etc.. first, then vote on the resulting binaries.   
This definitely doesn't seem to be what maven is doing.   They seem to 
vote on the "state of the code in the repository", then do the release 
steps.    I think it would be good if the processes that were used could 
act as an example, especially for the incubator folks that are learning.   

My (somewhat wacky idea) might be to add a "release:stage" that would do 
ALL the release steps, but to a "staging area" (apache home directory or 
similar, maybe need a "staging" section to the distributionManagement 
section of the pom) that the project could vote on, then another release 
goal to copy the staging to the real "release" area if/when the vote 
passes.


3) Signing/deploying - this is another area that maven doesn't seem 
to "help" too much.   Everyone seems to run deploy/release, then login to 
the people.apache.org and run a script over the directory to do the 
signing.    It would be nice to have "help" from maven to do that.

Actually, the Maven project doesn't seem to do it at all sometimes.   The 
javadoc plugin did get signed, but the new clover one did not.  However, 
the new maven-metadata.xml files got changed with javadoc, but didn't get 
re-signed so the .asc file does not match and thus verify fails.    Kind 
of hard to "trust" the maven repository when the sigs fail.


Anyway, I just wanted to start a discussion.   I'd love to point to maven 
and say "model Apache maven project," but, IMO, there is a bit to go.

Enjoy!
-- 
J. Daniel Kulp
Principal Engineer
IONA
P: 781-902-8727    C: 508-380-7194   F:781-902-8001
[EMAIL PROTECTED]

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

Reply via email to