At my day job, we went through a traumatic process of learning *not*
to type 'mvn deploy'. Reading the user list, it seems to me that our
experience is common.

We hit the 'multiple developers versus deployed snapshot' trap. The
process, familiar, I guess, to everyone here, is:

1) check out a multi-module project.
2) make one change of a coordinated series of changes in one project.
Don't check it in.
3) go to work on some other module that depends on the change from (1).
4) someone else makes an unrelated change to the same module as I did
in (1), and checks it in.
5) ci build deploys a snapshot.
6) my next build sees that snapshot as newer than my local build, and grabs it.
7) comedy ensues until I realize the need for 'mvn clean install' in
that project.

Now, I can avoid this by turning off snapshot updates. However, at
this point, the snapshots aren't doing anyone any use, so we might as
well not deploy them. If some complex test process needs snapshots, we
use a separate repo that ordinary devs don't search.

I discovered yesterday that one team had taken this idea to its local
extreme, and were just using release versions, no -SNAPSHOTS at all.
They reason that their builds are faster (no looking over the network)
and, since they never run 'deploy' on the versions used in
development, why use SNAPSHOTs at all?

The net of this is that SNAPSHOTs are useful when there's a directed
graph of usage: one entity is publishing, and some other entities are
consuming, and they never switch places.

If I turned all this thinking into apt, would anyone object to
checking it into the doc tree?

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to