Hello,
I have been given the task of exploring the maven-release-plugin before we try using it on our project. As of now, the releases are done manually on request. This process involves (skip this part if you're not interested, it's just to give you an idea):
- In the head, open the base POM file:
- Increment the numbering of the \project\version element, but keep the -SNAPSHOT suffix.
- In the \project\dependencyManagement element, look for all the project dependencies that are being released in this build, and increment the version number references \project\dependencyManagement\dependencies\dependency\version, but keep the -SNAPSHOT suffix.
- Open each sub-module's POM file in turn and increment the numbering of the \project\version element, but keep the -SNAPSHOT suffix.
- In a command prompt, navigate to the root of the head codebase and run mvn clean install.
- Ensure that all the version dependencies work correctly, and the full test suite runs successfully.
- Commit changes to the head.
As you can see, this is a lengthy and dull process which cries out for automation. I have found this question on SO where people recommend doing releases manually, which is kind of against what I am trying to achieve.
Automate this
We would like to automate this process using the maven-release-plugin but we are a bit wary of doing this. My research has led me to believing that the plugin should work reliably and do the job.
I have seen the -DdryRun=true
option for the release:prepare
target which also makes the impression that it can be tested safely beforehand. Also the Maven release:rollback
target seems to provide a reasonable means of reconciling from an error. But I am still not sure. Not as sure as I would like to be about this plugin.
My question is, do you have any war stories related to the maven-release-plugin? Any good/bad experience with it? Is the plugin robust enough to trust it?
<<<EDIT
I also heard that the plugin integrates well with the SCM tools such as SVN, CVS. We are currently using CVS, and would like the plugin to perform the following tasks as well:
- tag the release in CVS with the appropriate release number
- create branches in CVS with appropriate names
- should allow us to do a release from a branch with minimal config hassle
Have you got experience with this? Does it work well? Is it reliable?
>>>