[
http://jira.codehaus.org/browse/MRELEASE-634?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Steffi Tinder updated MRELEASE-634:
-----------------------------------
Attachment: continue-after-rewriting.patch
This patch replaces a "return" with a "continue" statement. The effect is, that
the execution of the loop that iterates over all declarations of dependencies
to the same groupid:artifactid is not cut off after the first dependency was
rewritten.
> Versions of snapshot dependencies to the same artifact with different
> classifiers are not updated correctly during release:prepare
> -----------------------------------------------------------------------------------------------------------------------------------
>
> Key: MRELEASE-634
> URL: http://jira.codehaus.org/browse/MRELEASE-634
> Project: Maven 2.x Release Plugin
> Issue Type: Bug
> Components: prepare
> Affects Versions: 2.1
> Reporter: Steffi Tinder
> Attachments: continue-after-rewriting.patch
>
>
> If you have several dependencies to the same artifact with different
> classifiers, the versions are not correctly updated by the release-plugin.
> Consider the following scenario:
> You have the following two dependencies in your pom:
> {code:xml}
> <dependency>
> <groupId>groupid</groupId>
> <artifactId>artifactid/artifactId>
> <version>1.0-SNAPSHOT</version>
> </dependency>
> <dependency>
> <groupId>groupid</groupId>
> <artifactId>artifactid/artifactId>
> <scope>test</scope>
> <classifier>tests</classifier>
> <version>1.0-SNAPSHOT</version>
> </dependency>
> {code}
> During release:prepare, the plugin will ask you to enter release and dev
> version for groupid:artifact twice, but it will discard the information you
> entered the first time.
> This happens because the ReleaseManager uses a "versionlessKey" to store the
> resolved snapshot dependencies.
> {code:title=org.apache.maven.shared.release.phase.CheckDependencySnapshotsPhase}
> private Map processSnapshot( Set snapshotSet )
> throws PrompterException, VersionParseException
> {
> ...
> resolvedSnapshots.put( versionlessKey, versionMap );
> ...
> }
> {code}
> When the version tags in the pom are updated with the new versions, only one
> of the dependencies will be updated. Again, the release-plugin will only use
> groupid and artifactid to identify the dependency.
> It also checks if the dependency was already updated and so the second
> dependency-element is ignored:
> {code:title=org.apache.maven.shared.release.phase.CheckDependencySnapshotsPhase}
> private void rewriteDependencies( List dependencies, Element dependencyRoot,
> Map mappedVersions,
> Map resolvedSnapshotDependencies, Map
> originalVersions, String projectId,
> Element properties, ReleaseResult
> result, ReleaseDescriptor releaseDescriptor )
> throws ReleaseExecutionException, ReleaseFailureException
> {
> ...
> if ( !dependenciesAlreadyChanged.contains( depId ) )
> {
> //This check is required because updateDomVersion update all
> dependencies with the current groupId/artifactId
> //(standard dependencies and sub-dependencies like ejb-client) so we
> don't need to re-update them
> ...
> }
> }
> {code}
> *Summary:*
> The problem consists of two parts:
> 1. the version information entered for the second dependency is discarded
> (that means you couldn't specify different versions for the two dependencies)
> 2. only on of the dependency elements is updated during the release
> The result is a remaining SNAPSHOT-dependency in the released artifacts.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira