Hi folks,

as a plain lurker to ADS, I'd like to make some minor comments to this 
proposal, too. Mainly because we deal with a comparable complexity here in our 
office.

Some History Regarding Maven Interactions: 
You mension, that the SNAPSHOT handling for parents is broken. This is not the 
complete truth, since any SNAPSHOT handling is broken. Maven does not download 
a SNAPSHOT again, that is in your local repo. So if you have a dep on a 
SNAPSHOT, you can only trust it if you either have wiped out any SNAPSHOT out 
of your local repo before or you have build all those yourself (as I do my 234 
reported projects currently).

What we do with our TLP:
- it's an own project. In your case tlp-commons will be released automatically 
with every version bump. Might be OK though for tlp-commons
- we locked down the version *all* used plugins in a pluginManagement section 
otherwise the build is not really repeatable (it's still not, if you don't use 
the same Maven version - at least currently)
- we do not define plugins directly in the TLP. In your case you do so for the 
jar and surefire plugin, but keep in mind, not every produced artifact might 
use them
- we use a dependencyManagement section declaring all externals and released 
deps with versions, no version is used in the dep declaration anywhere else 
(this is a policy you have to decide on your own, but it helps to use the same 
version everywhere)
- we use also TLP version "SNAPSHOT" i.e. the latest, it helps to introduce 
changes that effects a lot of other modules. If you have to release the TLP 
always for this, you'll have to update a lot of POMs to the new version. If the 
TLP is released, we set the next version always back to SNAPSHOT. This also 
helps with artifacts that are not released but reference the "latest" TLP 
version.

Drawbacks:
- when releasing an artifact, you should always remember to set the version to 
the parent (normally TLP) to the latest one (otherwise you may use older plugin 
versions or global settings)
- you do normally a frequent manually update of the TLP from svn and install it 
in the local repo (to get latest changes)


Maybe you can pick some useful parts for your policy.

BTW: We use also a lot of POMs that get never released. They usually reside in 
the top lovel directories and have basically just a module section (and often 
those modules are "injected" by svn:externals). We call them "builder POMs" and 
they are never used as parent POM anywhere. Quite handy.

Cheers,
Jörg

Reply via email to