I spent the last few days skating a bit close to the edge in fighting with the POMs to get the release to stick together.
A few notes on the carnage, and a suggesting for the next time around... I pitched the use of org:apache:7 as our parent. It's advertised as a generally sensible parent pom for all Apache maven projects, but I feel, pretty vehemently, that this is false advertising. I know of one other very experienced PMC chair of a large Apache project in mvn who feels the same way. So it's gone. If the maven gang every makes a parent pom that sticks to providing what's useful and doesn't include intrusive and unwanted settings, this could be reconsidered. I'm striving to rationalize the work that happens during :prepare and the work that happens during :perform. Now that we don't have a gnu pointed to our heads, I'd really like to know what other people think. Keep in mind that the purpose of perform is to create a tag pointing to a version with the proposed release numbers in the poms, and the purpose of prepare is to checkout that tag, build, and push. The release plugin has an easy way to activate profiles for perform, and no special theory about prepare. Here's a proposal, what do folks think? NORMAL DEVELOPER RUNS MVN: * full unit tests * no distribution packages * example job NORMAL DEVELOPER RUNS MVN -Peverything: (useful for things like mvn versions:set) * full unit tests * mvn includes distribution directory, but distribution directory does not actually build distribution * example job NORMAL DEVELOPER RUNS MVN -Peverything,release (useful for testing release wiring) * full unit tests * full distribution package * example job RM RUNS MVN release:prepare -Peverything,fastinstall * no unit tests * mvn visits distribution to create tag, but does not build bundles * no example job RM RUNS MVN release:perform *no unit tests *full distribution *example job
