Crazy experiment number two: obtain our dependencies using the Maven Ant task

so that we're 100% external dependency free no matter how you build us. This is
the path to righteousness that all of our libraries must eventually go down to
save us from the dependency frying pan and put us into the dependency fire.


git-svn-id: https://samskivert.googlecode.com/svn/trunk@2924 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
samskivert
2010-10-15 15:53:24 +00:00
parent bdf46ef4c7
commit 2726db602f
3 changed files with 38 additions and 155 deletions
+38 -66
View File
@@ -1,103 +1,81 @@
<?xml version="1.0"?>
<project name="samskivert" default="compile" basedir=".">
<project name="samskivert" default="compile" basedir="." xmlns:artifact="urn:maven-artifact-ant">
<!-- various configurations -->
<property name="lib.name" value="samskivert"/>
<property name="src.dir" value="src/main/java"/>
<property name="test.dir" value="src/test/java"/>
<property name="libs.dir" value="lib"/> <!-- used in libs-incl.xml -->
<property name="deploy.dir" value="dist"/>
<property name="classes.dir" value="${deploy.dir}/classes"/>
<property name="tclasses.dir" value="${deploy.dir}/test-classes"/>
<property name="javadoc.dir" value="${deploy.dir}/docs"/>
<property name="gwtjar.dir" value="${deploy.dir}/gwt-jar"/>
<!-- declare our classpath business -->
<path id="classpath">
<pathelement location="${classes.dir}"/>
<fileset dir="${deploy.dir}/lib" includes="*.jar"/>
</path>
<!-- import some targets to enumerate and check dependency availability -->
<import file="etc/libs-incl.xml"/>
<import file="etc/depends-incl.xml"/>
<!-- prepares the application directories -->
<target name="prepare">
<tstamp><format property="year" pattern="yyyy" /></tstamp>
<mkdir dir="${deploy.dir}"/>
<mkdir dir="${deploy.dir}/lib"/>
<mkdir dir="${classes.dir}"/>
<mkdir dir="${tclasses.dir}"/>
<mkdir dir="${javadoc.dir}"/>
<copy todir="${classes.dir}"><fileset dir="src/main/resources" includes="**"/></copy>
<copy todir="${tclasses.dir}"><fileset dir="src/test/resources" includes="**"/></copy>
<copy todir="${deploy.dir}/lib" flatten="true">
<fileset refid="${lib.name}.libs"/>
</copy>
<!-- make sure we have our minimum required dependencies -->
<property name="deps.root" value="http://samskivert.googlecode.com/files"/>
<property name="deps.url" value="${deps.root}/samskivert-depends-1.0.zip"/>
<fail message="Missing jar dependencies. Download ${deps.url} and unzip it here.">
<condition><not><available file="${deploy.dir}/lib/junit4.jar"/></not></condition>
</fail>
<property name="maven-ant.vers" value="2.1.1"/>
<property name="maven-ant.dir" value="${user.home}/.m2/ant-support"/>
<property name="maven-ant.jar" value="${maven-ant.dir}/maven-ant-tasks-${maven-ant.vers}.jar"/>
<property name="maven-ant.url" value="http://mirrors.ibiblio.org/pub/mirrors/apache/maven/binaries"/>
<condition property="maven-ant.exists"><available file="${maven-ant.jar}"/></condition>
<target name="-download-maven-ant" unless="maven-ant.exists">
<mkdir dir="${maven-ant.dir}"/>
<get src="${maven-ant.url}/maven-ant-tasks-${maven-ant.vers}.jar"
dest="${maven-ant.jar}" usetimestamp="true"/>
</target>
<!-- cleans out the intermediate build files -->
<target name="clean">
<target name="-init-maven-ant" depends="-download-maven-ant">
<taskdef resource="org/apache/maven/artifact/ant/antlib.xml"
uri="urn:maven-artifact-ant" classpath="${maven-ant.jar}"/>
<artifact:pom id="pom" file="pom.xml"/>
<artifact:dependencies pathId="classpath" pomRefId="pom"/>
</target>
<target name="-prepare" depends="-init-maven-ant">
<mkdir dir="${deploy.dir}"/>
</target>
<target name="clean" description="Cleans out compiled classes and docs.">
<delete dir="${classes.dir}"/>
<delete dir="${tclasses.dir}"/>
<delete dir="${deploy.dir}/docs"/>
<delete dir="${gwtjar.dir}"/>
<delete failonerror="false"><fileset dir="${deploy.dir}" includes="*.jar"/></delete>
</target>
<!-- wipes the entire build directory clean -->
<target name="distclean">
<target name="distclean" description="Cleans out all build resultss.">
<delete dir="${deploy.dir}"/>
</target>
<!-- build the java class files -->
<target name="compile" depends="prepare,compute-builds">
<target name="compile" depends="-prepare" description="Compiles main and test sources.">
<mkdir dir="${classes.dir}"/>
<copy todir="${classes.dir}"><fileset dir="src/main/resources" includes="**"/></copy>
<javac srcdir="${src.dir}" destdir="${classes.dir}" includeAntRuntime="false"
debug="on" optimize="${build.optimize}" source="1.5" target="1.5" encoding="utf-8">
<classpath refid="classpath"/>
<exclude name="com/samskivert/net/MailUtil*" unless="build.mail"/>
<exclude name="com/samskivert/servlet/**" unless="build.servlet"/>
<exclude name="com/samskivert/util/Log4JLogger*" unless="log4j.present"/>
<exclude name="com/samskivert/velocity/**" unless="build.velocity"/>
<exclude name="com/samskivert/xml/**" unless="build.xml"/>
<compilerarg value="-Xlint"/>
<compilerarg value="-Xlint:-serial"/>
</javac>
<mkdir dir="${tclasses.dir}"/>
<copy todir="${tclasses.dir}"><fileset dir="src/test/resources" includes="**"/></copy>
<javac srcdir="${test.dir}" destdir="${tclasses.dir}" includeAntRuntime="false"
debug="on" optimize="${build.optimize}" source="1.5" target="1.5" encoding="utf-8">
<classpath>
<path refid="classpath"/>
<pathelement location="${classes.dir}"/>
</classpath>
<exclude name="com/samskivert/net/MailUtil*" unless="build.mail"/>
<exclude name="com/samskivert/servlet/**" unless="build.servlet"/>
<exclude name="com/samskivert/util/Log4JLogger*" unless="log4j.present"/>
<exclude name="com/samskivert/velocity/**" unless="build.velocity"/>
<exclude name="com/samskivert/xml/**" unless="build.xml"/>
<compilerarg value="-Xlint"/>
<compilerarg value="-Xlint:-serial"/>
</javac>
</target>
<!-- build the javadoc documentation -->
<target name="javadoc" depends="prepare,compute-builds">
<target name="javadoc" depends="-prepare" description="Builds javadocs.">
<tstamp><format property="year" pattern="yyyy"/></tstamp>
<mkdir dir="${javadoc.dir}"/>
<javadoc windowtitle="${lib.name} API"
doctitle="${lib.name} API"
overview="src/main/javadoc/overview.html"
destdir="${javadoc.dir}"
additionalparam="-breakiterator"
link="http://samskivert.com/code/samskivert/samskivert/docs/api/">
<packageset dir="${src.dir}">
<exclude name="com/samskivert/servlet/**" unless="build.servlet"/>
<exclude name="com/samskivert/velocity/**" unless="build.velocity"/>
<exclude name="com/samskivert/xml/**" unless="build.xml"/>
</packageset>
<packageset dir="${src.dir}"/>
<bottom>Copyright &#169; 2000-${year} Michael Bayne, et al. All Rights Reserved.</bottom>
<classpath refid="classpath"/>
<link href="http://java.sun.com/j2se/1.4/docs/api/"/>
@@ -105,9 +83,9 @@
</target>
<!-- a target for rebuilding everything -->
<target name="all" depends="clean,compile,javadoc,dist"/>
<target name="all" depends="clean,compile,javadoc,dist"
description="Cleans and rebuilds everything."/>
<!-- runs our unit tests -->
<property name="test" value=""/>
<target name="tests" depends="compile"
description="Runs unit tests. Use -Dtest=Foo to run only FooTest.">
@@ -117,24 +95,18 @@
<classpath>
<pathelement location="${classes.dir}"/>
<pathelement location="${tclasses.dir}"/>
<fileset dir="${deploy.dir}/lib" includes="*.jar"/>
<path refid="classpath"/>
<fileset dir="lib/test" includes="*.jar"/>
</classpath>
<sysproperty key="test_dir" value="${tclasses.dir}"/>
<formatter type="brief" usefile="false"/>
<batchtest>
<fileset dir="${test.dir}">
<include name="**/*${test}*Test.java"/>
<exclude name="com/samskivert/servlet/**" unless="build.servlet"/>
<exclude name="com/samskivert/velocity/**" unless="build.velocity"/>
<exclude name="com/samskivert/xml/**" unless="build.xml"/>
</fileset>
<fileset dir="${test.dir}" includes="**/*${test}*Test.java"/>
</batchtest>
</unit>
</target>
<!-- builds our jar file -->
<target name="dist" depends="compile">
<target name="dist" depends="compile" description="Builds jar files.">
<jar destfile="${deploy.dir}/${lib.name}.jar" basedir="${classes.dir}"/>
<!-- we export a small selection of classes for use by GWT -->
<mkdir dir="${gwtjar.dir}"/>
-74
View File
@@ -1,74 +0,0 @@
<?xml version="1.0"?>
<!-- build configuration -->
<project name="samskivert-checks" basedir=".">
<!-- checks to see which packages are available -->
<target name="check-available">
<echo level="info">The packages required for building are listed below. A package</echo>
<echo level="info">followed by 'true' indicates that the package is present.</echo>
<echo level="info"></echo>
<available property="servlet2.3.present" classpathref="classpath"
classname="javax.servlet.Servlet"/>
<echo level="info">Servlet 2.3: ${servlet2.3.present}</echo>
<available property="mail.present" classpathref="classpath"
classname="javax.mail.Transport"/>
<echo level="info">Java Mail: ${mail.present}</echo>
<available property="jakarta.commons-colls.present" classpathref="classpath"
classname="org.apache.commons.collections.CollectionUtils"/>
<echo level="info">Commons Collections: ${jakarta.commons-colls.present}</echo>
<available property="jakarta.commons-logging.present" classpathref="classpath"
classname="org.apache.commons.logging.Log"/>
<echo level="info">Commons Logging: ${jakarta.commons-logging.present}</echo>
<available property="jakarta.commons-digester.present" classpathref="classpath"
classname="org.apache.commons.digester.Digester"/>
<echo level="info">Commons Digester: ${jakarta.commons-digester.present}</echo>
<available property="jakarta.velocity.present" classpathref="classpath"
classname="org.apache.velocity.Template"/>
<echo level="info">Velocity: ${jakarta.velocity.present}</echo>
<available property="log4j.present" classpathref="classpath"
classname="org.apache.log4j.Logger"/>
<echo level="info">log4j: ${log4j.present}</echo>
</target>
<!-- combines package availability into build controls -->
<target name="compute-builds" depends="check-available">
<echo level="info">The packages that will be built are listed below. One followed</echo>
<echo level="info">by 'true' indicates that it will be built.</echo>
<echo level="info"></echo>
<condition property="build.servlet">
<and>
<isset property="servlet2.3.present"/>
</and>
</condition>
<echo level="info">com.samskivert.servlet: ${build.servlet}</echo>
<condition property="build.velocity">
<and>
<isset property="build.servlet"/>
<isset property="jakarta.commons-colls.present"/>
<isset property="jakarta.velocity.present"/>
<isset property="servlet2.3.present"/>
</and>
</condition>
<echo level="info">com.samskivert.velocity: ${build.velocity}</echo>
<condition property="build.xml">
<and>
<isset property="jakarta.commons-logging.present"/>
<isset property="jakarta.commons-digester.present"/>
</and>
</condition>
<echo level="info">com.samskivert.xml: ${build.xml}</echo>
<condition property="build.mail">
<and>
<isset property="mail.present"/>
</and>
</condition>
<echo level="info">com.samskivert.net.MailUtil: ${build.mail}</echo>
</target>
</project>
-15
View File
@@ -1,15 +0,0 @@
<?xml version="1.0"?>
<!-- declares the libraries needed to build samskivert -->
<project name="library-dependencies">
<fileset dir="${libs.dir}" id="samskivert.libs">
<include name="ant.jar"/>
<include name="commons-collections.jar"/>
<include name="commons-digester.jar"/>
<include name="commons-logging.jar"/>
<include name="junit4.jar"/>
<include name="log4j.jar"/>
<include name="mail.jar"/>
<include name="servlet-api.jar"/>
<include name="velocity-1.5-dev.jar"/>
</fileset>
</project>