Herwig: Great examples of why lein-collisions is useful.
I think it would be helpful to include that text in your README on Github somewhere. Andy On Thu, Jul 9, 2015 at 9:00 AM, Herwig Hochleitner <hhochleit...@gmail.com> wrote: > 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. > -- 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.