When a pom has a parent specified with a snapshot version, when "mvn release:prepare" is executed, the version entered by the user when prompted to resolve the parent version is not used when the pom is rewritten. The parent version remains at the snapshot version in the rewritten pom.
This happens in dry run mode and normal mode.
I will attach a zip file with a simple example/test case that shows the bug. The steps to reproduce using the zip file:
1. cd to parent
2. execute "mvn install"
3. cd to ../child
4. execute "mvn -DdryRun=true release:prepare" answering "yes" to the first
"resolve dependencies?" question and then answering with the default to
all the other questions
5. cat pom.xml.tag noticing the parent SNAPSHOT version has not been replaced
The cause of this appears to be in AbstractRewritePomsPhase.rewriteParent. This method only consults the mappedVersions Map, however when the release plugin is executed from the command line and the user enters the version number to resolve the snapshot dependency (even using the default provided by the release plugin) the values are stored in the resolvedSnapshotDependencies Map only.
I've modified the code to consult both Maps which is what other methods in the class do when rewriting dependency snapshot revisions. I have provided a patch with the modified code. The patch also contains a new test method in RewritePomsForReleasePhaseTest that will fail without the patch and pass with it.
The patch was taken from maven-release 2.0-beta-9 and can be applied with
patch -p0 < ~/maven-release-rewrite-parent-bug.patch