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