Hi,

My problem is not really only about Maven, but more about a general 
buildmanagement-strategy using Maven. I didn't found a mailinglist or newsgroup 
dedicated for general buildmanagement-topics, so try to post my issue in this 
list.

I'm quite new to buildmanagement and have to think about a concept to support 
the evolutionary architecture (or better "evolutionary development of the 
architecture") we want to employ in the future of our product.
After hours and days of considering and contemplating we found two possible 
solutions. Because both has serious drawbacks, I hope that anybody of you 
already knows this scenario/requirements (I think it's not too unusual) or has 
any suggestions to improve our solutions.

The requirements:
1) It is neccessary to support different modules (WARs) depending on the same 
module (JAR) in different versions: For example, first we developed a module 
"booking" in version 1. Some common stuff is implemented in "core" (version 1, 
too), where booking-1 depends on. Some time after release our customer wants to 
have an reporting-module, so wie develop reporting-1 and implement some 
improvements to core (because during the last project and in the meantime we 
saw, that there some decisions weren't ideal). So reporting-1 depends on 
core-2. We do not want to upgrade booking-1 to use core-2, because in this 
case, booking would have to pass QA again (and the customer wouldn't pay this - 
there is no new feature).

2) It is neccessary, that it's possible to fix booking-1 or even core-1 (a bug 
in booking-1 is in core-1, in truth), although core-2 is the current version of 
core and booking-1 wouldn't even compile against core-2.

The infrastructure:
1) We use Synergy/CM for version-control. For this case it's similar to 
Subversion with release-branch strategy. In opposite to Subversion, cheap 
and/or history-preserving copies are not supported.
2) We use Maven2 with an own Nexus-repository. Currently we use Maven and Nexus 
just to serve third-party-libs and to give the developers the possibility not 
to have to checkout the full source, but only these parts, they work with. So 
the repository isn't really part of releasing a new version of our system - we 
not even create a Release-version of our snapshots.

The (possible) solutions:
1) In each module are additional directories for the different versions. Each 
version-directory contains quite the same code (differing only in the changes 
made between the versions):
   core-
       |-1-src-...
       |-2-src-...
       ...
This doesn't feel rights. It's somehow ugly, we copy code and we have to merge 
bugfixes manually from one version to all others. But it's a quite simple 
solution to solve both requirements.

2) Each release-branch contains only the current version of code. The other 
versions are taken from the Maven-repository (in this case we have to use 
release-version and all the stuff). If a bugfix is core-1 is neccessary, a 
developer check-out the release-branch 1, implement the bugfix, start the build 
and calls a build- or release-manager to deploy the release-version to the 
repository. If it's time to go live with a new version, an appropriate assembly 
is built, which contains in parts of "fresh compiled" code and in parts of 
artifacts out of the the Maven-repository.
At the detail, this is a quite complex approach. I don't really like, that we 
don't have a release-branch containing the full production-code - instead we 
would release a mixture of different release-branches.


If any of you has some experience with similar requirements, has an idea for a 
different solution or an suggestion to improve the one or the other solution, I 
would really appreciate your ideas and comments.


Thanks for reading all of this quite long mail. :-)

  Stefan
-- 
GMX DSL SOMMER-SPECIAL: Surf & Phone Flat 16.000 für nur 19,99 Euro/mtl.!*
http://portal.gmx.net/de/go/dsl

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to