Thank You!

I asked because I would like to match with our current development aproaches. 
Maybe it worst looking into detail, because here are working subcontractors and 
only module managers are deploying. The separation of workspace is realised by 
SVN authorization on different branches.

Usually we are working in at least two branches. One of the branches plays the 
role of integration and user acceptance test branch (UAT) and at least one 
development branch (DEV_*) (the number of DEV_ branches depends on the number 
of parallel works). This is because the writing permission on UAT is given only 
to module managers! (The development teams usually are different 
subcontractors, so they are working on their own DEV_* or BUGFIX_* branches.)

The ideea is that merging into UAT is performed only by module managers. But 
before the DEV team is passing the merging task to module manager, they 
synchronizes with the UAT content (merge from UAT to DEV_) to be in synchron 
state. In this way the DEV_ team has the same sources as on the stable UAT plus 
what they modified. After the development tests (on DEV_ branch) passes, 
everything goes to acceptance tests by merging into UAT and releasing it as a 
staging version. If any errors occurs on user acceptance test environment, they 
will be fixed on DEV_* branches then updated + merged to UAT. Every new release 
is getting a diferent version, so is no version overwriting in maven repository.

In UAT environment instead of using 1.1.1-SNAPSHOT version we would use 
1.1.1-01 (<major version>.<minor version>.<incremental version>-<qualifier>) 
becauses the policy is that on UAT servers is not allowed to install developer 
version. "01" means <qualifier> and always is changing with every deployment on 
UAT environment. At one point a version is passing user acceptance tests and 
that version goes to PRODUCTION. <minor version> we are incrementing when 
incompatible changes are introduced and <incremental version> is bound to a 
feature set.

It seems that the source codes on UAT branch and the DEV_ branches must be 
versioned with SNAPSHOT and the release:prepare  (and :perform) commands has to 
be used only on UAT branch by modul managers. Therefore form UAT branch is 
useless to deploy a snapshot. Usually it's enough to use release plugin to 
build releases.

Another issue is that often we have different teams working with applications 
which are interdependent and goes to UAT tests together (not enough timeframe 
each individually be tested on uat env.). That means, they will have on their 
dependencyManagement some SNAPSHOT dependencies which needs to be resolved 
manually before releasing it. Until now I was thinking that version range 
dependencies without -SNAPSHOT would be enough for us, but won't be enough. I'm 
right?
But what about a two parallel development branch who wouldn't want to see each 
other's on dependencies? They will use non overlapping version ranges or all 
their dependencies (also SNAPSHOT) will be fixed?

Sorry for too much details. Right now I am facing these real condition issues 
which differs a little bit compared to open source aproach.

Regards,
Tibor
________________________________________
Feladó: Stephen Connolly [stephen.alan.conno...@gmail.com]
Küldve: 2009. január 12. 14:27
Címzett: Maven Users List
Tárgy: Re: release plugin only works with snapshot projects.

Functions as designed.

You should only ever do development work on a project that has a -SNAPSHOT
version.

The -SNAPSHOT version indicates that this is the version we are working
towards...

Maven does not allow re-deploying a non-SNAPSHOT version, so that if you are
doing development with a pom that has version 4.5.1 and somebody
accidentally runs

mvn deploy

Then the code base *at that specific point in time* is what will be
deployed.

When you then later try to deploy 4.5.1 for real, the redeployment will/may
be silently quashed (depending on what repository manager and what version
of the maven deploy plugin you are using) and you have an irreproducible
build.

So the short answer is: "Because you'll f*ck it up if you don't use a
-SNAPSHOT version"

-Stephen

2009/1/12 Tibor Kiss <tibor.k...@indgroup.eu>

> Hi.
>
> If I try to prepare a multi-project whose version is a non-snapshot
> version, it throws an exception:
> "You don't have a SNAPSHOT project in the reactor projects list."
>
> I don't understand why is a must to start releasing from a snapshot
> version?
>
> Regards,
> Tibor
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
> For additional commands, e-mail: users-h...@maven.apache.org
>
>

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

Reply via email to