BTW: commit ids as version numbers break down here, because they are
not ordered.
They have a partial ordering wrt a particular repo. Many repos have
straight-line histories, and thus have a total ordering.
Neither maven nor ivy are so simple-minded to allow only one version.
How well ranges work out... I can't really know. I only know the
theory for now.
That the underlying system allows it is no comfort when there seems to
be no obvious provision in project.clj for this:
:dependencies [[org.clojure/clojure "1.1.0"]
[org.clojure/clojure-contrib "1.0-SNAPSHOT"]
[clout "0.1"]]
Does that mean "use whatever's appropriate", or "I must use 1.1.0
only"? Do these version strings admit that Maven syntax?
How does one tell Maven/lein "never use two different versions of
Clojure"? How does one tell Maven to *rebuild* a library -- e.g.,
Compojure -- using 1.2, so that I can safely use it in my requires-1.2
project? (Or "look in a repo to find a version of Compojure built
using 1.2"?)
These are questions that I think must be addressed, because these
problems come up all the time.
Just this week I noticed that Apache HttpComponents 4.0.1 and 4.1 use
completely different methods to apply pre-emptive HTTP Basic Auth, and
have even changed class hierarchies. A version of clj-apache-http
targeted at 4.0.1 won't even run against a 4.1 jar (and vice versa),
*even without AOT*, because the package names are different. On the
other hand, some libraries -- such as log4j -- preserve API
compatibility across versions.
Sorry to be raining on everyone's parade with this...
-R
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en