On Sun, Jul 3, 2011 at 6:06 PM, Phil Hagelberg <p...@hagelb.org> wrote: > Konrad Hinsen <konrad.hin...@fastmail.net> writes: > >> I am looking for a build tool that fulfills the following requirements: > >> 4) Must handle dependencies in the form of on-disk jar files (not in >> any repository) > > For the record, leiningen can do this by adding a repository with a > file:/// URL; it's just not documented because I think it's a bad idea.
Why? One pillar of Clojure philosophy is to get out of the way and let programmers get the job done, with a minimum of fuss and ceremony. Unlike Java. Requiring any project that has dependencies, even if these are only other local projects, have a repository adds gratuitous ceremony. And this is especially true if the user has little or no prior experience setting up and working with repositories, as they grow their programming skillset. Ordinarily, they would gradually progress from single-file projects to multi-file projects to projects with common, locally-installed third-party libraries and/or other local projects as dependencies, and eventually to projects that use and are hosted on repositories of some sort. Your "I think it's a bad idea" amounts to thinking that forcing the third and fourth steps in that progression to be combined into one single giant leap is a *good* idea, and I'm rather dubious of any such claim. One new source of complexity should be mastered at a time, in my view, absent a *very* good reason, and repositories are definitely a humongous source of complexity, so an especially strong case can be made that that *particular* new source of complexity should be tackled separately from any other. (Just consider: starting out using repositories requires mastering a whole new client/server app type on a par with email, newsgroups, ftp, and the web; then there's all these different hosting alternatives -- maven, github, sourceforge, google code, etc. and sometimes software of the same name or closely related like maven and git, as well as other software like rcs, cvs, and svn; then there's the associated terminology: commits, pull requests, push requesus, branches, masters, forks, checkouts and checkins, and so forth, not all of them applicable to each individual variation on the theme; then there's individual projects' often-partly-unwritten rules regarding forking, commit access, pull/push requests, and what-have-you; and setting up a local repository of one's own means installing a server, securing it, installing a client, learning how to use it, and so on and so forth. Indeed, a lot of people will never before have installed and secured a server of any kind in their entire lives, I expect; that itself is something whose learning I think should probably be tackled separately, but if you haven't already done something like run your own listserv or web server (not just site, you own httpd process which if hacked means your own computer is violated), then starting to use local version control means tackling that at the same time as a load of other new and moderately complex things. To which your recommendation adds a third group of complicated new things. So, it's not even two *steps* combining into one giant leap; it's a step followed by an already-fairly-large *leap* combining into one *ridiculous* leap.) -- Protege: What is this seething mass of parentheses?! Master: Your father's Lisp REPL. This is the language of a true hacker. Not as clumsy or random as C++; a language for a more civilized age. -- 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