I'm building clojure-contrib locally from source, and would like to use the resulting jar file in other projects, which I'm building with leiningen. To accomplish this, I need to get the clojure-contrib.jar resulting form the build installed in the correct place in ~/.m2/repository. I've been doing it by hand, because I can't figure out how to make the combination of build.xml, pom.xml and bubble-gum that's clojure-contrib's build system do what I need:
(1) ant ci-build Builds a two "slim" versions of clojure-contrib.jar, one of which is called "slim", the other isn't. Installs these in the correct location. i.e. almost works. The ci-build target claims to "Build clojure-contrib using Clojure obtained via Maven.", but that doesn't appear to be accurate. Since it reports check_hasclojure: [echo] WARNING: You have not defined a path to clojure.jar so I can't compile files. [echo] This will cause some parts of clojure.contrib not to work (e.g., pretty print). [echo] To enable compiling, run "ant -Dclojure.jar=<...path to clojure.jar..>" Well, it just so happens that I have a recent build of clojure-1.1.0-master-SNAPSHOT under the name clojure.jar... (2) ant -Dclojure.jar=clojure.jar ci-build This does ahead-of-time compilation for all clojure sources. It produces a "slim" and a non-slim version of clojure-contrib.jar. Only the "slim" version is actually slim. This does not, however, appear to ever call "mvn install". So, I'm left with two correct .jar files, neither of which are visible to later builds of other projects. Well gosh-darnit, I've got a pom.xml file lying here. Shouldn't a "mvn install" just work? (3) mvn install [INFO] [jar:jar {execution: default-jar}] [WARNING] JAR will be empty - no content was marked for inclusion! [INFO] [install:install {execution: default-install}] [INFO] Installing /home/smithma/w/clojure-contrib/target/clojure-contrib-1.0-SNAPSHOT.jar to /home/smithma/.m2/repository/org/clojure/clojure-contrib/1.0-SNAPSHOT/clojure-contrib-1.0-SNAPSHOT.jar So, this installs an empty jar pretending to be clojure-contrib. This is, of course, completely broken behavior. The next leiningen build grabs this thinking it's getting the real deal and completely croaks. The problem appears to be that the ant build puts it's build products into ./classes, but maven expects to find such things in ./target/classes, hence nothing to put in the JAR. (and since the JAR already built by ant is in ./, not in ./target maven can't just grab that. Summary: I've tried three different ways to get this to work and failed. What am I overlooking? The nightly builds exist, so clearly this must be working for someone, just not me. Is it really this broken? If it really is this broken, how about having our build.xml follow maven conventions for build products? Or how about overriding the maven defaults in pom.xml to be in sync with what ant is actually doing? Thankful for any pointers, Ben -- 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