pit/jdb-build-1.6.xml

204 lines
6.9 KiB
XML
Raw Normal View History

2011-11-20 21:00:53 -06:00
<?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="init"/>
<target name="clean" depends="-init">
<delete dir="${build.dir}"/>
</target>
<!--======== LIBRARY TARGETS ========-->
Multiple sort criteria to filters, bugfix, and cleanup. * Fixed a bug in the common build. This bug is fixed in version 1.9, but I am patching this bug locally in 1.6 until I have evaluated 1.9 with this project. * Moved `ExtendedPropertyHelp` to `com.jdbernard.pit` from `com.jdbernard.pit.file`. * Added a number of property types to `ExtendedPropertyHelp`. New additions are: * `java.util.Calendar` *object -> string value only* * `java.util.Date` *object -> string value only* * `java.lang.Long` *this replaces `java.util.Integer`* * `java.lang.Float` *object -> string value only* * `java.lang.Double` * Cleaned up the `matches(String)` and `matches(Class)` functions of `ExtendedPropertyHelp` * Modified `Filter` sorter behaviours. The `issueSorter` and `projectSorter` fields are now allowed to be either a closure or a list of closures. A single closure works as it did before. The list of closures allows the caller to specify multiple sort criteria. The individual criteria closures are applied in reverse order, so that the first item in the sorter list is the most significant criteria. For example, if the caller set the sorter to `[{it.category},{it.priority}]` then the issues would be sorted first by priority and then sorted again by category, meaning that the resulting data would be ordered first by the category of the issue and then by the priority for issues that share the same category. * Modified the methods in `Project` that use `Filter` objects to conform to the above behavior regarding sorting. It may be a better idea though to move the sort code all into `Filter` so that it is in one place. * Cleaned up the code in `Status` for matching status based on given symbols or partial status names.
2011-12-07 18:01:18 -06:00
<target name="-lib" depends="-lib-local,-lib-ivy,lib"/>
<target name="lib"/>
2011-11-20 21:00:53 -06:00
<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"/>
<entry key="build.number" value="0" type="int" operation="="/>
</propertyfile>
</target>
<!--======== COMPILATION TARGETS ========-->
Multiple sort criteria to filters, bugfix, and cleanup. * Fixed a bug in the common build. This bug is fixed in version 1.9, but I am patching this bug locally in 1.6 until I have evaluated 1.9 with this project. * Moved `ExtendedPropertyHelp` to `com.jdbernard.pit` from `com.jdbernard.pit.file`. * Added a number of property types to `ExtendedPropertyHelp`. New additions are: * `java.util.Calendar` *object -> string value only* * `java.util.Date` *object -> string value only* * `java.lang.Long` *this replaces `java.util.Integer`* * `java.lang.Float` *object -> string value only* * `java.lang.Double` * Cleaned up the `matches(String)` and `matches(Class)` functions of `ExtendedPropertyHelp` * Modified `Filter` sorter behaviours. The `issueSorter` and `projectSorter` fields are now allowed to be either a closure or a list of closures. A single closure works as it did before. The list of closures allows the caller to specify multiple sort criteria. The individual criteria closures are applied in reverse order, so that the first item in the sorter list is the most significant criteria. For example, if the caller set the sorter to `[{it.category},{it.priority}]` then the issues would be sorted first by priority and then sorted again by category, meaning that the resulting data would be ordered first by the category of the issue and then by the priority for issues that share the same category. * Modified the methods in `Project` that use `Filter` objects to conform to the above behavior regarding sorting. It may be a better idea though to move the sort code all into `Filter` so that it is in one place. * Cleaned up the code in `Status` for matching status based on given symbols or partial status names.
2011-12-07 18:01:18 -06:00
<target name="-compile-groovy" depends="-init,-init-groovy,-lib">
2011-11-20 21:00:53 -06:00
<mkdir dir="${build.dir}/main/classes"/>
<groovyc srcdir="${src.dir}/main" destdir="${build.dir}/main/classes"
includeAntRuntime="false" fork="yes">
<classpath>
<path refid="groovy.classpath"/>
<path refid="compile-libs"/>
</classpath>
<javac/>
</groovyc>
</target>
Multiple sort criteria to filters, bugfix, and cleanup. * Fixed a bug in the common build. This bug is fixed in version 1.9, but I am patching this bug locally in 1.6 until I have evaluated 1.9 with this project. * Moved `ExtendedPropertyHelp` to `com.jdbernard.pit` from `com.jdbernard.pit.file`. * Added a number of property types to `ExtendedPropertyHelp`. New additions are: * `java.util.Calendar` *object -> string value only* * `java.util.Date` *object -> string value only* * `java.lang.Long` *this replaces `java.util.Integer`* * `java.lang.Float` *object -> string value only* * `java.lang.Double` * Cleaned up the `matches(String)` and `matches(Class)` functions of `ExtendedPropertyHelp` * Modified `Filter` sorter behaviours. The `issueSorter` and `projectSorter` fields are now allowed to be either a closure or a list of closures. A single closure works as it did before. The list of closures allows the caller to specify multiple sort criteria. The individual criteria closures are applied in reverse order, so that the first item in the sorter list is the most significant criteria. For example, if the caller set the sorter to `[{it.category},{it.priority}]` then the issues would be sorted first by priority and then sorted again by category, meaning that the resulting data would be ordered first by the category of the issue and then by the priority for issues that share the same category. * Modified the methods in `Project` that use `Filter` objects to conform to the above behavior regarding sorting. It may be a better idea though to move the sort code all into `Filter` so that it is in one place. * Cleaned up the code in `Status` for matching status based on given symbols or partial status names.
2011-12-07 18:01:18 -06:00
<target name="-compile-java" depends="-init,-lib">
2011-11-20 21:00:53 -06:00
<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" fork="true">
<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>