We have a complex JavaEE app with multiple wars, jars, ds.xml and config
files, etc.  In fact, there are over 80 different artifacts that make up
our application. We use the maven-assembly-plugin to create a gzip file
and untar it into a JBOSS instance to deploy and run. It's not pretty
and it's a nightmare to actually do a release. We use Subversion, Maven
3, Nexus for repository management and Jenkins for build management. The
following are the manual steps required for us to do a release:

 

1.       Create a SNAPSHOT version of the changed modules and deploy to
a test environment

a.       Create a SNAPSHOT branch in SVN

b.      Copy changed modules to the new branch from trunk

c.       Manually change the dependency versions from SNAPSHOT  as
needed in each individual POM

d.      Manually change the dependency versions in the assembly POM
files (there are 5 sub assemblies and one main assembly to put them all
together)

e.      Run mvn deploy  on each new module to install SNAPSHOT versions
to Nexus

f.        Run mvn install on each sub-assembly (I don't want to deploy
the assemblies to Nexus)

g.       Run mvn package on the main assembly

h.      Copy and untar the main assembly on our  QA JBOSS
server/instance

 

2.       Create  a RELEASE version and deploy to production

a.       Merge the SNAPSHOT branch modules in SVN to trunk

b.      Repeat steps a-h, above, manually removing "-SNAPSHOT" from all
the POM files

 

I've tried to simplify a little by consolidating dependency management
in the parent assembly, but it still requires that I modify each
affected sub-assembly to use the correct parent version. Why not use the
maven-release-plugin to eliminate the manual process, you might wonder?
Great, then I have to modify each POMs scm element whenever I do a
SNAPSHOT-to-RELEASE, and, unless I use module inheritance in my POMs at
some point, the release plugin isn't going to recurse through all of the
changed modules for me.

 

I thought maven was supposed to relieve me of this manual configuration
nightmare, but it seems to only have increased it. All of the
documentation and Web-help I have seen discusses only simple
multi-module systems, with maybe a war, an ejb and a domain jar, for
example. That's child's play compared to what we have to deal with, and
I'm just out of ideas. Maybe someone out there has faced a similar
daunting task and can help. Thanks in advance.

 

 

 

 

 

Reply via email to