On Sep 4, 2008, at 18:47, Beyer,Nathan wrote:

Have you read this document - 
http://docs.codehaus.org/display/MAVEN/Dependency+Mediation+and+Conflict+Resolution

It may help answer some of the questions.


Yes. That helped, as did
http://docs.codehaus.org/display/MAVEN/Extending+Maven+2.0+Dependencies

Which actually comes out and says that qualifier and build nr are mutually exclusive. The syntax given says this too, but I wasn't seeing it. Another way of looking at it, I suppose, is that everything following "1.2.3-" is taken as single qualifier, which is compared numerically if it happens to be composed only of digits and otherwise compared as a string.

It seems that '.2.3', in the example above is optional, those parts taken to be zero if missing. If any alphanumerics get mixed up in there or about without a separating hyphen the whole thing goes textual and is just compared as a single string. At least that's what I understood. So presumably, if we're comparing two version strings with eachother and one is "well formed" and the other is not, they just get compared as if they were both not well formed.

also interesting that the stirng comparison is case insensitive.


-----Original Message-----
From: Benjamin Smith-Mannschott [mailto:[EMAIL PROTECTED]
Sent: Thursday, September 04, 2008 6:21 AM
To: Maven Users List
Subject: how, exactly, does maven compare versions


[...snip...]

From what I've read, this is what i'm guessing in answer to my own examples:

20080818.010000-2 cmp? 20080818.230000-1
 20080818.010000-2 < 20080818.230000-1
 because both are compared asciibetically

Is this build number also compared asciibetically? (Not that it's
likely to matter since the time stamp changes.)

(it seems so, yes)

So, are the following true? :

1 = 1.0.0
true


1 < 1.0.1
true


9.0.0 < 10.0.0
true


1.0.0 < 1.0.0-01
Unsure, is the integer 1 compared to the integer 0, or is "01" treated as a sting because 1.0.0 doesn't have a comparable build number. Either way, I suspect "true".

1.0.0 < 1.0.0-00
?

1.0.0-Apple-09 < 1.0.0-Zed-01
true. The whole qualifier Apple-09 or Zed-01 is compared asciibetically.


1.0.0-SNAPSHOT < 1.0.0
true. snapshot always before corresponding release.

1.0.0-SNAPSHOT < 1.0.0-01
This must be true, otherwise ordering is inconsistent.


What about these:

1.0.0-Anteaters < 1.0.0-Zebras
true

1.0.1-Anteaters > 1.0.0-Zebras
true

SNAPSHOT < 0.0.0
false? because asciibetical comparison is forced.


Anteaters-SNAPSHOT cmp? Zebras-SNAPSHOT

No idea. but I've observed what appeared to be
Anteaters-SNAPSHOT2 > Zebras-SNAPSHOT1 when SNAPSHOT2 > SNAPSHOT1.
I don't know why.

// Ben

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to