I haven't hacked on new Clojure stuff for the past two months or so. Now, having updated my repositories, I find that everybody just dropped ant and moved to leiningen.
I tried to make sense of things, but can't. I must be missing something big here. It seems that leiningen assumes that you are building an application. It downloads all dependencies and can build an uberjar for you. That's great, but what if what I have is a bunch of libraries, all being developed and modified? Also, I now have at least six clojure jars in ~/.m2 (huh?!), along with a collection of other assorted stuff. I don't want to use any of these clojure jars, I have a checked out git repo with clojure and this is the only code I want to run. Also, swank-clojure insists on having its own clojure jar in ~/.swank-clojure (why?). I used to have a bunch of directories with git repos. I would update those, run ant to gather code into jars, fiddle with the classpath in my custom-crafted clj script, symlink things around. It was about as bad as with Common Lisp. But now things got worse -- I no longer feel in control of anything. Some things won't build, lein tells me about "artifacts" (huh?!), things get installed in weird places. My clj script that gets run by SLIME form Emacs can't find libraries that leiningen downloaded. How do people deal with this? As a more general observation, I think that a large part of Perl's and Python's success was a unified way of dealing with libraries. There are certain directories where you can drop libraries and expect them to work (be found). There is ONE way of running the VM (one script, blessed by the language creator). Then on top of that there is CPAN, which plugs into that, downloading dependencies and dropping libraries into those well-known directories. It isn't perfect, but it works, and is predictable. Shouldn't we have a well-known Single Setup for Clojure as well? I am very worried that Clojure is rapidly going the Common Lisp way, with each developer having his own precious carefully crafted setup. Every system is different, everyone uses a different script to run clojure programs, there is no single place to drop your libraries into, and libraries have no conventions on where their code is (what do I add to classpath once I have a library checked out?). I thought Leiningen was supposed to solve these issues, but either I am missing something, or it is really a tool to manage dependencies for a single application. --J. -- 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