Embracing Maven may sound like madness for a dynamic language when you are trying to break free from Static Languages Land. There _ARE_ compelling arguments for using simple maven pom files though.
1 - You get access to repository managers like http://archiva.apache.org/ 2 - You get access to automated build tools like https://hudson.dev.java.net/ and http://continuum.apache.org/ 3 - IDEs can pick up pom.xml files and "just work" 4 - DRY project structure. Not reinventing the wheel for every module you write. 5 - Lots of other reasons. On Apr 2, 7:39 am, Jason Sankey <ja...@zutubi.com> wrote: > Paul Stadig wrote: > > This works great for Java libraries, but only libraries that are in a > > maven repo. How hard is it to get code into a repo? What about java > > libraries not in a maven repo, or clojure code like clojure-json on GitHub? > > I don't think it is terribly hard to get in the repo, but there can be lag. > > > 1. You could set up your own repo. Ok. Cool, but not the easiest to > > setup and maintain, plus you need a server. > > Actually, many Maven projects end up having to do exactly that, and > indeed lots of people recommend doing so. The main reasons are: > > 1) Having an external dependency for your build is bad news: e.g. you > don't want your builds to fail because the Maven repo is down. > 2) Historically at least the Maven central repository contains projects > with incorrect dependency information, so you need to correct that > yourself anyway. > 3) Just depending on the latest version of a module (or latest of a > release stream) on the central repository means your build can break due > to an unforseen external change. So while it might seem nice to keep > magically up to date (without changing your own repository/poms) at > first this is not something that works in practice. > > Maintaining your own repository takes work but makes these problems go > away. On the flipside you have to ask if this work is yielding enough > benefit over just getting the jars you need and dropping them in a > directory. I think for small projects/companies it won't be, but for > larger efforts and particularly where you have multiple modules of your > own with their own interdepencies the balance tips. > > > 2. You could install dependencies in your local repo. Cool, if the > > project happens to be using maven and you can to "mvn install". Uncool, > > if you have to manually "install" it into your local repo. Also uncool, > > because I see my local repo more as a cache that can sometimes get > > crufty and can be cleared out if I need the disk space. Maven *should* > > be able to re-download my dependencies and put them in my local repo, > > but not so for these manual workarounds. > > In my experience for these other dependencies the trickiest part can be > figuring out what they in turn depend on, which you have to do either > way. Once you know that dropping them into a simple repository is not > that hard. > > If you want to maintain this information that you derived manually, then > you just can't expect to treat it like a cache. Keep One True copy > somewhere, possibly in version control. > > > 3. ??? > > > I'm not trying to be disparaging. If this works for someone, I think it > > is pretty slick. I'm still of the mind that there could be something > > better. Something that can pull from a maven repo as needed, but also > > pull from other sources like github, sourceforge, google code, etc. I'm > > just spoiled by rubygems. This is an existence proof that there can be a > > simple way to download and setup dependencies (not without foibles). > > Other tools like apt/dpkg also come to mind as solving this reasonably > well. I think a key thing in this case is a lot of effort goes into > maintaining the packages and testing a full "distribution" of them > together. This makes the dependency information and stability more > reliable than the Maven central repo -- but it requires a lot of resources. > > > Perhaps if there was a Clojure Maven Repo (CMR) where people could > > easily get their code distributed, then I would feel satisfied. > > Certainly a standardised way to specify your dependencies would be a > good thing. I'm not sure it needs to be Maven based -- although > interoperability with Maven would be a worthy goal. > > I am personally a happy Ivy user -- Ivy essentially does the dependency > management part of Maven but (IMO): > > - with more flexibility; and > - without the rest of the Maven baggage (or features depending on your > perspective) > > Ivy interoperates with Maven, and also supports pluggable resolvers, so > you can host your Jars/dependency information in multiple ways. > > > What happened to the ClojureForge idea from tech.coop > > <http://tech.coop>? Did anything come about from that, Drew? Perhaps > > just hosting CMR with some way to signup for an account to be able to > > "mvn deploy"? > > A central place to at least look for Clojure libraries would be a great > start. If it also hosted those libraries and included standardised > dependency information, I think it would be helpful whether you just > wanted to stick the jars in a directory or use a full-blown dependency > management tool. > > Cheers, > Jason > > > > > On Thu, Apr 2, 2009 at 1:25 AM, dysinger <dysin...@gmail.com > > <mailto:dysin...@gmail.com>> wrote: > > > ...for easy dependency management and no-compile project setup. > > https://github.com/dysinger/clojure-pom/tree > > > Using maven only for the dependency management and to create a custom > > repl script allows me to still use emacs/slime for dynamic development > > of clojure code. > > > My motivation is 3 fold: > > > 1) I have lots of small modules and want convention over configuration > > (no boiler plate ant scripts or other such cut and paste) > > > 2) I want access to the kabazillion libraries in the maven repos - > > just go look at mvnrepository.com <http://mvnrepository.com> for > > example. > > > 3) Although I spent 10 years on Java, I am a dynamic language fan. I > > don't care or want to AOT compile at the moment. I just want to setup > > the libraries that my clojure code depends on and start writing / > > prototyping clojure code in Emacs SLIME. > > > I would love to hear some feedback and/or what other people have been > > working on. > > > -Tim > > -- > Pulse - Continuous Integration made easy. > Does your project have a pulse? > Try it free at:http://zutubi.com --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---