---
 build+ivy.xml |  163 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ivy.xml       |   18 ++++++
 2 files changed, 181 insertions(+)

Index: trunk/build+ivy.xml
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ trunk/build+ivy.xml	2009-05-26 23:38:56.000000000 +0200
@@ -0,0 +1,156 @@
+<project name="clojure" default="artifacts"
+    xmlns:ivy="antlib:org.apache.ivy.ant">
+
+    <typedef resource="org/tigris/subversion/svnant/svnantlib.xml"
+        classpath="svnant.jar"/>
+
+    <property name="src.dir" location="src"/>
+    <property name="jsrc.dir" location="${src.dir}/jvm"/>
+    <property name="cljsrc.dir" location="${src.dir}/clj"/>
+    <property name="classes.dir" location="classes"/>
+    <property name="build.dir" location="build"/>
+    <property name="lib.dir" location="lib"/>
+
+    <property name="jar.file" location="${build.dir}/clojure.jar"/>
+    <property name="srcjar.file"
+        location="${build.dir}/clojure-source.jar"/>
+
+    <property file="local.properties"/>
+
+    <!-- version related properties -->
+    <property file="${cljsrc.dir}/clojure/version.properties"/>
+    <!-- ensures all version properties are present -->
+    <fail unless="clojure.version.major"/>
+    <fail unless="clojure.version.minor"/>
+    <fail unless="clojure.version.interim"/>
+
+    <condition property="clojure.version.incremental.label"
+        value=".${clojure.version.incremental}"
+        else="">
+        <length string="${clojure.version.incremental}"
+            when="greater"
+            length="0"/>
+    </condition>
+
+    <condition property="allow.publish">
+        <equals arg1="${clojure.version.interim}" arg2="false" trim="true"/>
+    </condition>
+
+    <property name="clojure.version.label"
+        value="${clojure.version.major}.${clojure.version.minor}${clojure.version.incremental.label}"/>
+
+    <target name="init" description="--> create build directories">
+        <tstamp/>
+        <mkdir dir="${classes.dir}"/>
+        <mkdir dir="${build.dir}"/>
+        <mkdir dir="${lib.dir}"/>
+    </target>
+
+    <target name="resolve" depends="init"
+        description="--> resolve dependencies with Ivy">
+        <ivy:resolve />
+        <ivy:retrieve />
+    </target>
+
+    <target name="compile-java" depends="resolve,init"
+        description="--> compile java sources">
+        <javac srcdir="${jsrc.dir}" destdir="${classes.dir}"
+            includeJavaRuntime="yes" debug="true" target="1.5"/>
+    </target>
+
+    <target name="compile-clojure" depends="compile-java,resolve,init"
+        description="--> compile clojure sources">
+        <java classname="clojure.lang.Compile" failonerror="true">
+            <classpath>
+                <path location="${classes.dir}"/>
+                <path location="${cljsrc.dir}"/>
+                <fileset dir="${lib.dir}" includes="**/*.jar"/>
+            </classpath>
+            <sysproperty key="clojure.compile.path" value="${classes.dir}"/>
+            <arg value="clojure.core"/>
+            <arg value="clojure.main"/>
+            <arg value="clojure.set"/>
+            <arg value="clojure.xml"/>
+            <arg value="clojure.zip"/>
+            <arg value="clojure.inspector"/>
+        </java>
+    </target>
+
+    <target name="artifacts" depends="compile-clojure,compile-java"
+        description="--> create source and artifact jars">
+        <jar jarfile="${jar.file}">
+            <path location="epl-v10.html"/>
+            <fileset dir="${cljsrc.dir}"
+                includes="clojure/version.properties"/>
+            <fileset dir="${classes.dir}" includes="**/*"/>
+            <manifest>
+                <attribute name="Main-Class" value="clojure.main"/>
+                <attribute name="Class-Path" value="."/>
+            </manifest>
+        </jar>
+
+        <jar jarfile="${srcjar.file}">
+            <path location="epl-v10.html"/>
+            <fileset dir="${classes.dir}" includes="clojure/asm/**"/>
+            <fileset dir="${classes.dir}" includes="clojure/lang/**"/>
+            <fileset dir="${classes.dir}" includes="clojure/main.class"/>
+            <fileset dir="${cljsrc.dir}" includes="**/*.clj"/>
+            <manifest>
+                <attribute name="Main-Class" value="clojure.main"/>
+                <attribute name="Class-Path" value="."/>
+            </manifest>
+        </jar>
+    </target>
+
+    <target name="clean" description="--> clean generated files">
+        <delete dir="${classes.dir}"/>
+        <delete dir="${build.dir}"/>
+    </target>
+
+    <target name="clean-lib" description="--> clean up library files">
+        <delete dir="${lib.dir}"/>
+    </target>
+
+    <target name="clean-local"
+        description="--> clean up local repository files">
+        <ivy:info />
+        <delete
+            dir="${ivy.local.default.root}/${ivy.organisation}/${ivy.module}"/>
+    </target>
+
+    <target name="clean-all" depends="clean,clean-lib,clean-local"
+        description="--> run all other clean targets"/>
+
+    <target name="publish"
+        description="--> publish artifacts in the shared repository"
+        if="allow.publish">
+        <ivy:info />
+        <ivy:publish
+            resolver="shared"
+            artifactspattern="${build.dir}/[artifact].[ext]"
+            pubrevision="${clojure.version.label}"
+            update="true"
+            status="release"/>
+    </target>
+
+    <target name="publish-local"
+        description="--> publish artifacts in the local repository">
+        <tstamp>
+            <format property="now" pattern="yyyyMMddHHmmss"/>
+        </tstamp>
+        <svn javahl="false">
+            <info target="${basedir}/build.xml"/>
+        </svn>
+        <ivy:info />
+        <!-- I also publish here in shared to provide random svn
+             revisions publicily. -->
+        <ivy:publish
+            resolver="shared"
+            artifactspattern="${build.dir}/[artifact].[ext]"
+            pubrevision="${svn.info.rev}"
+            pubdate="${now}"
+            status="integration"
+            forcedeliver="true"/>
+    </target>
+
+</project>
Index: trunk/ivy.xml
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ trunk/ivy.xml	2009-05-26 23:32:18.000000000 +0200
@@ -0,0 +1,17 @@
+<ivy-module version="2.0">
+
+    <info organisation="org.clojure" module="clojure"
+        status="integration"/>
+
+    <configurations>
+        <conf name="source"/>
+        <conf name="compiled"/>
+        <conf name="default" extends="source,compiled"/>
+    </configurations>
+
+    <publications>
+        <artifact name="clojure" type="jar" conf="compiled"/>
+        <artifact name="clojure-source" type="jar" conf="source"/>
+    </publications>
+
+</ivy-module>
