[ 
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

        

Reply via email to