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

Reply via email to