2015-07-08 18:41 GMT+02:00 Kevin Corcoran <kwcorco...@gmail.com>:

>
> The projects on which I work already use lein's :pedantic? flag.  Is there
> any reason we might want to use lein-collisions instead of :pedantic?
>
>
Hi Kevin,

if I understand :pedantic correctly, it catches cases, where transitive
dependencies would be pulled in with different versions, e.g.
(ring/ring-core "1.1.0" vs "1.2.0")

lein-collisions is exactly complementary: It catches cases, where
_different_ artefacts provide the same classes or resources. An example is
ibdknox/tools.reader vs org.clojure/tools.reader.
Another increasingly common case is the resource data_readers.clj being
defined by multiple libraries.

## Examples

An experience report of why library repackages like the tools.reader
example are especially problematic::
Program fails because of an outdated tools.reader version. You think
"strange, why is the library pulling an old version", but insert the most
recent version anyway. It still fails. You randomly tweak dependencies,
suddenly it works (because the classpath order changed), until it doesn't
(most often in production). The actual problem has been the whole time that
ibdknox/tools.reader provides classes resources in clojure/tools/reader*,
but it's very hard to discovery this.

Another example: garden (the css library) depends on yuicompressor, which
packages (not depends on) an old version of rhino. With lein-collisions,
you immediately find out about this and can take measures, like I did here:
https://github.com/webnf/webnf/tree/master/compat.yuicompressor
Without it, you eventually will run into bugs relating to old rhino
versions, only it will take you a long time to figure it out, because
you'll be pretty sure to depend on the most recent version.

kind regards

-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to