[ https://jira.codehaus.org/browse/MNG-3092?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=322477#comment-322477 ]
Sergei Ivanov commented on MNG-3092: ------------------------------------ For the avoidance of doubt, the following comment does not contain or imply any humour or jokes. I totally agree with Tuomas that Kunalkumar's proposed patch would not solve the problem. We want to be able to run two different builds: "snapshot vs. snapshot dependencies" and "snapshot vs. release dependencies" on the same project that uses defined dependency ranges, but without the need to mess about with the ranges. "Snapshot vs. snapshot dependencies" build verifies that the latest changes on the trunk did not break the project. This build must pick up 1.1.2-SHAPSHOT from [1.1.0,1.2.0) range, provided that 1.1.2-SHAPSHOT is the latest available on 1.1.x branch. A complete set of such builds for all projects verifies that the current tree is consistent and all modules are compatible. "Snapshot vs. release dependencies" verifies that the project can be released at this time using the existing released versions of dependencies. This build must pick up 1.1.1 from the same [1.1.0,1.2.0) range, even if 1.1.2-SHAPSHOT is available. If such build breaks, it indicates that the upstream projects may need to be released first. At present, the only way to achieve a clear separation of snapshot and release builds is to set up two separate tightly controlled build environments. You can scroll up for my previous comment, where I described how our CI environment is set up a greater detail. I cannot tell whether Tuomas's comment contained a hidden humorous reference to mine, or whether he indeed has a very similar set-up, but I prefer to think it is the latter. We only ever use version ranges for our internal dependencies, all external dependencies and plugins are always pegged to specific versions and any upgrades are done in a controlled way. My personal preference is that the inclusion of snashots into version ranges needs to be controlled on the build level, outside of the POM, so that they can be turned on and off all at once. For example, it may be a new dedicated command line option or an additional profile in the settings.xml. > 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 For more information on JIRA, see: http://www.atlassian.com/software/jira