[ 
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


Reply via email to