You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Robert Scholte (JIRA)" <ji...@codehaus.org> on 2012/02/28 22:24:02 UTC

[jira] (MRELEASE-634) Versions of snapshot dependencies to the same artifact with different classifiers are not updated correctly during release:prepare

     [ https://jira.codehaus.org/browse/MRELEASE-634?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Robert Scholte closed MRELEASE-634.
-----------------------------------

    Resolution: Duplicate

Duplicate of MRELEASE-161
                
> Versions of snapshot dependencies to the same artifact with different classifiers are not updated correctly during release:prepare 
> -----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: MRELEASE-634
>                 URL: https://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, please contact your JIRA administrators: https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira