Dave Newton wrote:

In other words, use the maven-release-plugin to publish
formal releases of code, and make sure that project A never depends on a snapshot of project B if you can possibly avoid it. Use proper version numbers.

Would it be reasonable to say that *released* versions of A shouldn't depend on 
B-snapshots?

Yes - the release plugin will enforce this for you.

The release plugin will refuse to continue with a release if any component of that release is a snapshot. This is because, by definition, if one of the components in a snapshot, then all bets are off for the entire release.

A reminder of why this matters:

It's 3am, your production server shows a bug. You want to rebuild the code on your dev environment so that you can recreate the bug, and fix it. But your build depends on a snapshot, so when you rebuild the code, you don't end up with the same code as the code in production. As a result, you cannot reproduce the bug, and your troubleshooter climbs the clock tower with a rifle.

Then, after coaxing your troubleshooter down from the clock tower, they stumble on the fix, and they attempt to put a fixed version of the code back into production. But again, you could not repeat your build, so you cannot put your fix - and *only* your fix - into production, so you now have new bugs. Your troubleshooter goes back up the clock tower.

If you get your developers to respect the release plugin, the side effect is that troubleshooting becomes an order of magnitude easier.

Regards,
Graham
--

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to