[ 
https://issues.apache.org/jira/browse/MNG-6064?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15380111#comment-15380111
 ] 

Hui Wang commented on MNG-6064:
-------------------------------

Thank you for looking at the ticket.   

I'm afraid we have a different understanding on the versioning conventions. I 
think the version with "dev" should be older than the  version without "dev", 
since a "dev" item means the current version is still under development,  which 
is similar to a version with suffix "alpha","beta", or "rc". for example: 

1.0.1 > 1.0.1-dev.2+5612df0 
1.0.1 > 1.0.1-beta
So, in the first example you showed, the comparison result should be: 
0.1.0-milestone.1 >  0.1.0-milestone.1.dev.2+5612df0

And I looked at the codes of method comparableQualifier() in nested class 
StringItem, for an item that isn't included in _QUALIFIERS, it will be 
transferred into the size of _QUALIFIERS, concatenated by the item itself. It 
makes "dev" version newer than the release version. 

And we actually ran into this issue in a complicated development scenario. A 
developer had some commits on his branch (including the remote and local one), 
but those commits haven't been pushed into master yet. So the 
specification-version was built as something like: 
1.0.1-dev.1.uncommit+5612df0, and this version was written into the database. 
Later, he made a new commit and the version became 
1.0.1-dev.2.uncommit+3e7u598, and he wanted to get the version in database 
updated. However, ComparableVersion couldn't detect it as a newer version and 
the update failed. I know this is not a usual scenario and probably only 
happens in development environment, but we still need it in our workflow. 

> Add "dev" string item into ComparableVersion
> --------------------------------------------
>
>                 Key: MNG-6064
>                 URL: https://issues.apache.org/jira/browse/MNG-6064
>             Project: Maven
>          Issue Type: Improvement
>          Components: Artifacts and Repositories
>    Affects Versions: 3.3.9
>         Environment: Any operating Systems
>            Reporter: Hui Wang
>            Priority: Blocker
>              Labels: maven
>   Original Estimate: 0.5h
>  Remaining Estimate: 0.5h
>
> We're using a popular Gradle plugin "gradle-git" ( from Andrew Oberstar ) to 
> implement Semantic Versioning with Continuous Deployment. There's a strategy 
> supported by gradle-git that defines a "dev" stage when we have something 
> uncommitted on a developer branch, which is very useful. Some examples to 
> demonstrate the "dev" scenario can be found here: 
> https://github.com/ajoberstar/gradle-git/wiki/Release%20Plugins#how-do-i-use-the-opinion-plugin
> However, current version of  
> org.apache.maven.artifact.versioning.ComparableVersion does not support "dev" 
> stage since there's no item "dev" in the field _QUALIFIERS of nested class 
> StringItem. And since this is a private static final field, it is not able to 
> be overwritten by inheritance. Can we add the "dev" item into _QUALIFIERS ? 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to