Moved paths, taskdefs into specific init targets. Restructured init task flow. Created defaults for required properties. Added echo messages to library resolution. Targets now create their required directories before trying to use them.
199 lines
6.7 KiB
XML
199 lines
6.7 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<project name="Jonathan Bernard Build Common">
|
|
|
|
<property environment="env"/>
|
|
|
|
<!--======== INIT TARGETS ========-->
|
|
<target name="-init" depends="-common-init,init"/>
|
|
|
|
<target name="-common-init">
|
|
<!-- Set default values for some key properties. Since properties are
|
|
write once, any value set before this point takes precedence. -->
|
|
|
|
<property name="versioning.file" value="project.properties"/>
|
|
|
|
<property name="src.dir" value="${basedir}/src"/>
|
|
<property name="build.dir" value="${basedir}/build"/>
|
|
<property name="lib.dir" value="${basedir}/lib"/>
|
|
<property name="resources.dir" value="${basedir}/resources"/>
|
|
|
|
<!--======== PATHS ========-->
|
|
<path id="groovy.classpath">
|
|
<fileset dir="${env.GROOVY_HOME}/lib">
|
|
<include name="*.jar"/>
|
|
</fileset>
|
|
</path>
|
|
|
|
<path id="groovy.embeddable">
|
|
<fileset dir="${env.GROOVY_HOME}/embeddable">
|
|
<include name="*.jar"/>
|
|
</fileset>
|
|
</path>
|
|
|
|
<path id="compile-libs">
|
|
<fileset dir="${build.dir}/lib/compile/jar">
|
|
<include name="*.jar"/>
|
|
</fileset>
|
|
</path>
|
|
|
|
<path id="runtime-libs">
|
|
<fileset dir="${build.dir}/lib/runtime/jar">
|
|
<include name="*.jar"/>
|
|
</fileset>
|
|
</path>
|
|
|
|
</target>
|
|
|
|
<target name="-init-groovy">
|
|
<taskdef name="groovyc" classpathref="groovy.classpath"
|
|
classname="org.codehaus.groovy.ant.Groovyc"/>
|
|
|
|
<taskdef name="groovy" classpathref="groovy.classpath"
|
|
classname="org.codehaus.groovy.ant.Groovy"/>
|
|
</target>
|
|
|
|
<target name="clean" depends="-init">
|
|
<delete dir="${build.dir}"/>
|
|
</target>
|
|
|
|
<!--======== LIBRARY TARGETS ========-->
|
|
<target name="lib" depends="-lib-local,-lib-ivy"/>
|
|
|
|
<target name="-lib-ivy" unless="${lib.local}"/>
|
|
|
|
<target name="-lib-local" if="${lib.local}">
|
|
<echo message="Resolving libraries locally."/>
|
|
<mkdir dir="${build.dir}/lib/compile/jar"/>
|
|
<mkdir dir="${build.dir}/lib/runtime/jar"/>
|
|
<copy todir="${build.dir}/lib/compile/jar" failonerror="false">
|
|
<fileset dir="${lib.dir}/compile/jar"/>
|
|
</copy>
|
|
|
|
<copy todir="${build.dir}/lib/runtime/jar" failonerror="false">
|
|
<fileset dir="${lib.dir}/runtime/jar"/>
|
|
</copy>
|
|
</target>
|
|
|
|
<!--======== VERSIONING TARGETS ========-->
|
|
<target name="increment-build-number" depends="-init">
|
|
<propertyfile file="${versioning.file}">
|
|
<entry key="build.number" default="0" type="int" value="1"
|
|
operation="+"/>
|
|
</propertyfile>
|
|
</target>
|
|
|
|
<target name="set-version" depends="-init">
|
|
<input
|
|
message="The current version is ${version}. Enter a new version: "
|
|
addproperty="new-version"/>
|
|
<propertyfile file="${versioning.file}">
|
|
<entry key="version" value="${new-version}" operation="="
|
|
type="string"/>
|
|
</propertyfile>
|
|
</target>
|
|
|
|
<!--======== COMPILATION TARGETS ========-->
|
|
<target name="-compile-groovy" depends="-init,-init-groovy,lib">
|
|
<mkdir dir="${build.dir}/main/classes"/>
|
|
<groovyc srcdir="${src.dir}/main" destdir="${build.dir}/main/classes"
|
|
includeAntRuntime="false">
|
|
|
|
<classpath>
|
|
<path refid="groovy.classpath"/>
|
|
<path refid="compile-libs"/>
|
|
</classpath>
|
|
<javac/>
|
|
</groovyc>
|
|
</target>
|
|
|
|
<target name="-compile-java" depends="-init,lib">
|
|
<mkdir dir="${build.dir}/main/classes"/>
|
|
<javac srcdir="${src.dir}/main" destdir="${build.dir}/main/classes"
|
|
includeAntRuntime="false" classpathref="compile-libs"/>
|
|
</target>
|
|
|
|
<target name="compile" depends="-compile-groovy"/>
|
|
|
|
<!--======== JUNIT TARGETS ========-->
|
|
<target name="-compile-tests-groovy" depends="-init,compile">
|
|
<mkdir dir="${build.dir}/test/classes"/>
|
|
<groovyc srcdir="${src.dir}/test" destdir="${build.dir}/test/classes"
|
|
includeAntRuntime="false">
|
|
|
|
<classpath>
|
|
<path refid="groovy.classpath"/>
|
|
<path refid="compile-libs"/>
|
|
<path location="${build.dir}/main/classes"/>
|
|
</classpath>
|
|
</groovyc>
|
|
</target>
|
|
|
|
<target name="-compile-tests-java" depends="-init,compile">
|
|
<mkdir dir="${build.dir}/test/classes"/>
|
|
<javac srcdir="${src.dir}/test" destdir="${build.dir}/test/classes"
|
|
includeAntRuntime="false">
|
|
<classpath>
|
|
<path refid="compile-libs"/>
|
|
<path location="${build.dir}/main/classes"/>
|
|
</classpath>
|
|
</javac>
|
|
</target>
|
|
|
|
<target name="compile-tests" depends="-compile-tests-groovy"/>
|
|
|
|
<target name="run-tests" depends="compile-tests,resources-test">
|
|
<junit printsummary="true">
|
|
<classpath>
|
|
<path refid="groovy.classpath"/>
|
|
<path refid="compile-libs"/>
|
|
<path location="${build.dir}/main/classes"/>
|
|
<path location="${build.dir}/test/classes"/>
|
|
</classpath>
|
|
<formatter type="plain" usefile="false"/>
|
|
<batchtest>
|
|
<fileset dir="${build.dir}/test/classes">
|
|
<include name="**/*"/>
|
|
</fileset>
|
|
</batchtest>
|
|
</junit>
|
|
</target>
|
|
|
|
<!--======== RESOURCES TARGETS ========-->
|
|
|
|
<target name="resources" depends="-init">
|
|
<mkdir dir="${build.dir}/main/classes"/>
|
|
<copy todir="${build.dir}/main/classes" failonerror="false">
|
|
<fileset dir="${resources.dir}/main/"/>
|
|
</copy>
|
|
</target>
|
|
|
|
<target name="resources-test" depends="-init">
|
|
<mkdir dir="${build.dir}/test/classes"/>
|
|
<copy todir="${build.dir}/test/classes" failonerror="false">
|
|
<fileset dir="${resources.dir}/test/"/>
|
|
</copy>
|
|
</target>
|
|
|
|
<!--======== BUILD TARGETS ========-->
|
|
<target name="-build-modular"
|
|
depends="compile,increment-build-number,resources">
|
|
|
|
<jar destfile="${build.dir}/${name}-${version}.${build.number}.jar"
|
|
basedir="${build.dir}/main/classes"/>
|
|
</target>
|
|
|
|
<target name="-build-packed-libs"
|
|
depends="compile,increment-build-number,resources">
|
|
|
|
<unjar destdir="${build.dir}/main/classes">
|
|
<fileset dir="${build.dir}/lib/runtime/jar"/>
|
|
</unjar>
|
|
|
|
<jar destfile="${build.dir}/${name}-${version}.${build.number}.jar"
|
|
basedir="${build.dir}/main/classes"/>
|
|
</target>
|
|
|
|
<target name="build" depends="-build-modular"/>
|
|
|
|
</project>
|