[ 
https://jira.codehaus.org/browse/MNG-3092?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=314385#comment-314385
 ] 

Scott Sosna commented on MNG-3092:
----------------------------------

I'm surprised of the focus for excluding snapshots; I see snapshots as being 
the main use case of ranges, in a development environment as I and at least one 
other have described.

For a release artifact, I expect it to have well-known, tested, absolute 
dependencies.  I don't want dependencies wandering as, for example, new 
versions of log4j get released.  When the new version of log4j has been 
tested/approved/certified, then put out a new POM with a slight version 
modification.  And I would never expect (or use) a released artifact that used 
snapshots.

However, a snapshot artifact should be able to use ranges referring to both 
snapshot and released artifacts, as necessary.


Instead of flags to determine inclusion/exclusion of snapshots within ranges, 
can we base on the type of artifact?
-For released artifacts, ranges only include releases and no snapshots in 
dependency resolution
-For snapshot artifacts, ranges include both release and snapshots in 
dependency resolution


The other question is to determine where snapshots fall in a version range.  If 
you presume that a released artifact represents finality, then snapshots always 
are less than the released artifact.

[1.0.0,1.3.0] starts at the 1.0.0 release up through the 1.3.0 release.  If the 
built artifact is a release, then you'd consider all 1.0.x, 1.1.x, 1.2.x 
releases as well as 1.3.0 itself.  If the build is a snapshot, you'd also 
consider all > 1.0.x snapshots, all 1.1.x snapshots, all 1.2.x snapshots, and 
all 1.3.0 snapshots.

[1.0.0-SNAPSHOT,1.0.1] implies building a snapshot artifact, discussed 
previously, and should consider all 1.0.0.x snapshots, 1.0.0 release, all 
1.0.1.x snapshots and 1.0.1 release.

[Not comprehensive examples, but hopefully enough to move the conversation 
forward.]


Now that this has been moved to 3.1.1, how do we continue this conversation so 
it doesn't die off again until 3.1.1 is next up.  This must be dealt with 
eventually.  If no resolution is determined, than at least go back to the 
functionality as implemented in Maven2.  While not perfect, it doesn't break 
backwards-compatibility.
                
> Version ranges with non-snapshot bounds can contain snapshot versions
> ---------------------------------------------------------------------
>
>                 Key: MNG-3092
>                 URL: https://jira.codehaus.org/browse/MNG-3092
>             Project: Maven 2 & 3
>          Issue Type: Bug
>          Components: Dependencies
>            Reporter: Mark Hobson
>            Assignee: Jason van Zyl
>             Fix For: 3.1.1
>
>         Attachments: MNG-3092.patch
>
>
> Contrary to the 2.0 design docs:
> "Resolution of dependency ranges should not resolve to a snapshot 
> (development version) unless it is included as an explicit boundary."
> -- from 
> http://docs.codehaus.org/display/MAVEN/Dependency+Mediation+and+Conflict+Resolution#DependencyMediationandConflictResolution-Incorporating%7B%7BSNAPSHOT%7D%7Dversionsintothespecification
> The following is equates to true:
> VersionRange.createFromVersionSpec( "[1.0,1.1]" ).containsVersion( new 
> DefaultArtifactVersion( "1.1-SNAPSHOT" ) )
> The attached patch only allows snapshot versions to be contained in a range 
> if they are equal to one of the boundaries.  Note that this is a strict 
> equality, so [1.0,1.2-SNAPSHOT] will not contain 1.1-SNAPSHOT.

--
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

        

Reply via email to