Lein could be a step in the right direction, but I wonder how it will manage to evolve given the complex tools it uses internally.
I have also seen a weird issue in my code base which has two classes derived from java.lang.Exception. If I do a clean and try compile, I get an error saying that my.package.MyException class not found. My workaround is, set :namespaces to only those Exception derived classes, compile and then set :namespaces to :all. Maybe I am missing some cool lein thing here or lein needs quite a bit of work in dependency handling. I am tempted to just stick to mvn which is quite mature and well-documented. Any clojure-specific needs could be addressed through a plug-in. Comments, thoughts? Thanks, Praki On Thu, Mar 4, 2010 at 5:52 AM, Stuart Halloway <stuart.hallo...@gmail.com> wrote: > Hi Jan, > > My 2c: Leiningen is an important step, but there is still plenty to do. > > My workflow: I am developing multiple Clojure libraries and applications, > with some of the dependencies changing daily. Whenever I want to make a > change, I: > > In the project being changed: > git tag a new version number > update the project.clj to a new version number > run "lein pom" and "lein jar" > copy the new files to a repos (clojars) > > In projects that depend on changed project > update the dependency in project.clj (if it is hard coded and not >=) > run lein deps > > This seems adequate to me (although there could be a bit more automation). > The problem of snapshot dependencies remains. The solution that springs to > mind here is to get projects off snapshots (presumably by releasing more > incremental versions). Library authors: please release lots of versions! (or > tell me why this is a bad idea). > > Some needs I see: > > (0) More point releases of key libs (or some other solution to the snapshots > problem) > > (1) Unify around the project structure imposed by lein, and/or > > (2) Improve the project structure imposed by lein, if it is broken in some > specific way. (Maybe add a well-known config file for adding elements to the > classpath?) > > (3) "lein deps" (or some other task) to clean up old jars. Right now I am > deleting them by hand from the lib directory. (Is this already solved?) > > Stu > >> 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 > > -- > 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 -- http://www.google.com/profiles/praki.prakash -- 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