[ http://jira.codehaus.org/browse/MRELEASE-416?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=167189#action_167189 ]
Jens Mühlenhoff edited comment on MRELEASE-416 at 2/26/09 11:02 AM: -------------------------------------------------------------------- To perform now releases in a batch mode with the ability to define the version numbers for used snapshot releases I add an extra lookup in the CheckDependencySnapshotsPhase.checkArtifact( Artifact artifact, Map originalVersions, ReleaseDescriptor releaseDescriptor ) mehotd. If there is a resolved snapshot dependency it will return false, like the situation if you allow timestamed snapshots. The method now looks like this: {noformat} private static boolean checkArtifact( Artifact artifact, Map originalVersions, ReleaseDescriptor releaseDescriptor ) { String versionlessArtifactKey = ArtifactUtils.versionlessKey( artifact.getGroupId(), artifact.getArtifactId() ); // We are only looking at dependencies external to the project - ignore anything found in the reactor as // it's version will be updated boolean result = artifact.isSnapshot() && !artifact.getBaseVersion().equals( originalVersions.get( versionlessArtifactKey ) ); // check if this artifact was already successfully resolved // FIXME: this could be done with releaseDescriptor.getDependencyReleaseVersion if it is fixed if( result && releaseDescriptor.getResolvedSnapshotDependencies() != null ) { Map versionMap = (Map) releaseDescriptor.getResolvedSnapshotDependencies().get( versionlessArtifactKey ); if( versionMap != null && versionMap.get( ReleaseDescriptor.RELEASE_KEY) != null ) { result = false; } } // If we have a snapshot but allowTimestampedSnapshots is true, accept the artifact if the version // indicates that it is a timestamped snapshot. if ( result && releaseDescriptor.isAllowTimestampedSnapshots() ) { result = artifact.getVersion().indexOf( "SNAPSHOT" ) >= 0; } return result; } {noformat} was (Author: jens.muehlenhoff): To perform now releases in a batch mode with the ability to define the version numbers for used snapshot releases I add an extra lookup in the CheckDependencySnapshotsPhase.checkArtifact( Artifact artifact, Map originalVersions, ReleaseDescriptor releaseDescriptor ) mehotd. If there is a resolved snapshot dependency it will return false, like the situation if you allow timestamed snapshots. The method now looks like this: private static boolean checkArtifact( Artifact artifact, Map originalVersions, ReleaseDescriptor releaseDescriptor ) { String versionlessArtifactKey = ArtifactUtils.versionlessKey( artifact.getGroupId(), artifact.getArtifactId() ); // We are only looking at dependencies external to the project - ignore anything found in the reactor as // it's version will be updated boolean result = artifact.isSnapshot() && !artifact.getBaseVersion().equals( originalVersions.get( versionlessArtifactKey ) ); // check if this artifact was already successfully resolved // FIXME: this could be done with releaseDescriptor.getDependencyReleaseVersion if it is fixed if( result && releaseDescriptor.getResolvedSnapshotDependencies() != null ) { Map versionMap = (Map) releaseDescriptor.getResolvedSnapshotDependencies().get( versionlessArtifactKey ); if( versionMap != null && versionMap.get( ReleaseDescriptor.RELEASE_KEY) != null ) { result = false; } } // If we have a snapshot but allowTimestampedSnapshots is true, accept the artifact if the version // indicates that it is a timestamped snapshot. if ( result && releaseDescriptor.isAllowTimestampedSnapshots() ) { result = artifact.getVersion().indexOf( "SNAPSHOT" ) >= 0; } return result; } > given dependencies from a release.property file not used during > release:prepare > ------------------------------------------------------------------------------- > > Key: MRELEASE-416 > URL: http://jira.codehaus.org/browse/MRELEASE-416 > Project: Maven 2.x Release Plugin > Issue Type: Bug > Components: prepare > Environment: Windows, maven 2.0.10 > Reporter: Jens Mühlenhoff > > Create a release.property file which holds all dependency you want to be > resolved. > Drung the release:prepare this properties are currently not used to resolve > snapshot dependencies: > #release configuration > dependency.test.parent\:root.release=0.0.2 > dependency.test.parent\:root.development=0.0.6-SNAPSHOT > The problem seams to be in the method: > ReleaseUtils.loadResolvedDependencies( ... ) > startIndex = propertyName.lastIndexOf( "dependency." ); > The methode lastIndexOf returns in this case always 0 because the last time > the string "dependency." was found at the starting position 0. > Until this isn't fixed it is hard to release several projects with one script. > Furthermore it would be good to niticed, that using the release.properties > will only work if the resume=flas is toggeled to true. > endIndex = propertyName.indexOf( ".development" ); > artifactVersionlessKey = propertyName.substring( startIndex, > endIndex ); > Currently artifactVersionlessKey will contain "dependency.test.parent:root" > which seams to be wrong. > This line must be changed to > artifactVersionlessKey = propertyName.substring( > startIndex+11, endIndex ); -- 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