You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
290 lines
15 KiB
290 lines
15 KiB
<project name="hamcrest" default="all">
|
|
|
|
<property name="version" value="SNAPSHOT" description="Version number to use in build files"/>
|
|
<property name="haltonfailure" value="true" description="Whether to halt the build if the tests fail"/>
|
|
<property name="debug" value="true" description="Whether to build with debug information"/>
|
|
<property name="javaversion" value="1.5" description="Java version to target"/>
|
|
<tstamp><format property="build.timestamp" pattern="yyyy-MM-dd HH:mm:ss" timezone="GMT"/></tstamp>
|
|
<taskdef name="junit" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask" classpath="lib/integration/ant-junit-1.8.4.jar"/>
|
|
|
|
|
|
<target name="all" depends="clean, bigjar, javadoc" description="Performs clean build, runs tests and packages for distribution"/>
|
|
|
|
<target name="clean" description="Clean up all built files">
|
|
<delete dir="build"/>
|
|
</target>
|
|
|
|
<target name="api" description="Build Hamcrest APIs">
|
|
<path id="cp-hamcrest-api-main" path=""/>
|
|
<path id="cp-hamcrest-api-test" path=""/>
|
|
<compile-module modulename="hamcrest-api"/>
|
|
<jar-module modulename="hamcrest-api"/>
|
|
<test-module modulename="hamcrest-api"/>
|
|
</target>
|
|
|
|
<target name="generator" depends="api" description="Build code generator tool">
|
|
<path id="cp-hamcrest-generator-main" path="lib/generator/qdox-2.0-M2.jar;build/hamcrest-api-${version}.jar"/>
|
|
<path id="cp-hamcrest-generator-test" path=""/>
|
|
<compile-module modulename="hamcrest-generator"/>
|
|
<jar-module modulename="hamcrest-generator"/>
|
|
<test-module modulename="hamcrest-generator"/>
|
|
|
|
<!-- Include QDox classes in hamcrest-generator.jar using JarJar to place classes under a different package -->
|
|
<taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask" classpath="lib/generator/jarjar-1.3.jar"/>
|
|
<copy file="build/hamcrest-generator-${version}.jar" tofile="build/hamcrest-generator-${version}-nodep.jar"/>
|
|
<jarjar jarfile="build/hamcrest-generator-${version}.jar">
|
|
<zipfileset src="build/hamcrest-generator-${version}-nodep.jar"/>
|
|
<zipfileset src="lib/generator/qdox-2.0-M2.jar"/>
|
|
<rule pattern="com.thoughtworks.qdox.**" result="org.hamcrest.generator.qdox.@1"/>
|
|
</jarjar>
|
|
</target>
|
|
|
|
<target name="core" depends="generator" description="Build core Hamcrest library">
|
|
<path id="cp-hamcrest-core-main" path="build/hamcrest-api-${version}.jar"/>
|
|
<path id="cp-hamcrest-core-test" path=""/>
|
|
<compile-module modulename="hamcrest-core"/>
|
|
<generate-module-factory modulename="hamcrest-core" configurationfile="hamcrest-core/core-matchers.xml" targetclass="org.hamcrest.CoreMatchers" sources="hamcrest-core/src/main/java"/>
|
|
<jar-module modulename="hamcrest-core"/>
|
|
<test-module modulename="hamcrest-core"/>
|
|
</target>
|
|
|
|
<target name="library" depends="core" description="Build library of matchers">
|
|
<path id="cp-hamcrest-library-main" path="build/hamcrest-api-${version}.jar;build/hamcrest-core-${version}.jar"/>
|
|
<path id="cp-hamcrest-library-test" path="build/hamcrest-core-${version}-tests.jar"/>
|
|
<compile-module modulename="hamcrest-library"/>
|
|
<generate-module-factory modulename="hamcrest-library" configurationfile="hamcrest-library/matchers.xml" targetclass="org.hamcrest.Matchers" sources="hamcrest-core/src/main/java,hamcrest-library/src/main/java"/>
|
|
<jar-module modulename="hamcrest-library"/>
|
|
<test-module modulename="hamcrest-library"/>
|
|
</target>
|
|
|
|
<target name="integration" depends="library" description="Build integration with external tools">
|
|
<path id="cp-hamcrest-integration-main">
|
|
<fileset file="build/hamcrest-api-${version}.jar"/>
|
|
<fileset file="build/hamcrest-core-${version}.jar"/>
|
|
<fileset file="build/hamcrest-library-${version}.jar"/>
|
|
<fileset dir="lib/integration" includes="**/*.jar"/>
|
|
</path>
|
|
<path id="cp-hamcrest-integration-test" path="build/hamcrest-core-${version}-tests.jar"/>
|
|
<compile-module modulename="hamcrest-integration"/>
|
|
<jar-module modulename="hamcrest-integration"/>
|
|
<test-module modulename="hamcrest-integration"/>
|
|
</target>
|
|
|
|
<target name="examples" depends="core, library, integration" description="Build and run unit tests.">
|
|
<path id="cp-hamcrest-examples-main">
|
|
<fileset file="build/hamcrest-api-${version}.jar"/>
|
|
<fileset file="build/hamcrest-core-${version}.jar"/>
|
|
<fileset file="build/hamcrest-library-${version}.jar"/>
|
|
<fileset file="build/hamcrest-integration-${version}.jar"/>
|
|
<fileset dir="lib/integration" includes="**/*.jar"/>
|
|
</path>
|
|
<compile-module modulename="hamcrest-examples"/>
|
|
<jar-module modulename="hamcrest-examples"/>
|
|
</target>
|
|
|
|
<target name="bigjar" depends="core,library,integration,generator" description="Build composite jars">
|
|
<!-- Bundle api into core jar -->
|
|
<copy todir="build/temp/hamcrest-core-${version}.jar.contents">
|
|
<fileset dir="build/temp/hamcrest-api-${version}.jar.contents"/>
|
|
</copy>
|
|
<copy todir="build/temp/hamcrest-core-${version}-sources.jar.contents">
|
|
<fileset dir="build/temp/hamcrest-api-${version}-sources.jar.contents"/>
|
|
</copy>
|
|
<jar-module modulename="hamcrest-core"/>
|
|
|
|
<!-- Bundle core, library, integration, and generator into all jar-->
|
|
<copy todir="build/temp/hamcrest-all-${version}.jar.contents">
|
|
<fileset dir="build/temp/hamcrest-core-${version}.jar.contents"/>
|
|
<fileset dir="build/temp/hamcrest-library-${version}.jar.contents"/>
|
|
<fileset dir="build/temp/hamcrest-integration-${version}.jar.contents"/>
|
|
<fileset dir="build/temp/hamcrest-generator-${version}.jar.contents"/>
|
|
</copy>
|
|
<copy todir="build/temp/hamcrest-all-${version}-sources.jar.contents">
|
|
<fileset dir="build/temp/hamcrest-core-${version}-sources.jar.contents"/>
|
|
<fileset dir="build/temp/hamcrest-library-${version}-sources.jar.contents"/>
|
|
<fileset dir="build/temp/hamcrest-integration-${version}-sources.jar.contents"/>
|
|
<fileset dir="build/temp/hamcrest-generator-${version}-sources.jar.contents"/>
|
|
</copy>
|
|
<path id="cp-hamcrest-all-main">
|
|
<path refid="cp-hamcrest-core-main"/>
|
|
<path refid="cp-hamcrest-library-main"/>
|
|
<path refid="cp-hamcrest-integration-main"/>
|
|
<path refid="cp-hamcrest-generator-main"/>
|
|
</path>
|
|
<jar-module modulename="hamcrest-all"/>
|
|
</target>
|
|
|
|
<target name="javadoc" depends="bigjar" description="build javadoc jars">
|
|
<javadoc-module modulename="hamcrest-generator"/>
|
|
<javadoc-module modulename="hamcrest-core"/>
|
|
<javadoc-module modulename="hamcrest-library"/>
|
|
<javadoc-module modulename="hamcrest-integration"/>
|
|
<javadoc-module modulename="hamcrest-all"/>
|
|
</target>
|
|
|
|
<target name="bundle" description="Create a release bundle for deployment to maven central" depends="clean, javadoc">
|
|
<copy todir="build">
|
|
<fileset dir="pom" includes="*.pom"/>
|
|
<filterset><filter token="VERSION" value="${version}"/></filterset>
|
|
<mapper type="regexp" from="(.*)\.pom" to="\1-${version}.pom"/>
|
|
</copy>
|
|
|
|
<sign target="hamcrest-parent-${version}.pom"/>
|
|
<jar-bundle modulename="hamcrest-parent"/>
|
|
|
|
<bundle-module modulename="hamcrest-core"/>
|
|
<bundle-module modulename="hamcrest-generator"/>
|
|
<bundle-module modulename="hamcrest-library"/>
|
|
<bundle-module modulename="hamcrest-integration"/>
|
|
<bundle-module modulename="hamcrest-all"/>
|
|
</target>
|
|
|
|
<macrodef name="make-manifest">
|
|
<attribute name="modulename" description="Name of the module"/>
|
|
<sequential>
|
|
<mkdir dir="build/temp/@{modulename}-${version}.jar.manifest"/>
|
|
<manifest file="build/temp/@{modulename}-${version}.jar.manifest/MANIFEST.MF">
|
|
<attribute name="Implementation-Title" value="@{modulename}"/>
|
|
<attribute name="Implementation-Vendor" value="hamcrest.org"/>
|
|
<attribute name="Implementation-Version" value="${version}"/>
|
|
<attribute name="Built-By" value="${user.name}"/>
|
|
<attribute name="Built-Date" value="${build.timestamp}"/>
|
|
</manifest>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="compile-module">
|
|
<attribute name="modulename" description="Name of the module to jar"/>
|
|
<sequential>
|
|
<compile-content srcdir="@{modulename}/src/main/java" jarname="@{modulename}-${version}" classpathref="cp-@{modulename}-main" />
|
|
<path id="cp-@{modulename}-test-complete">
|
|
<path path="lib/integration/junit-dep-4.11.jar"/>
|
|
<path refid="cp-@{modulename}-main"/>
|
|
<path refid="cp-@{modulename}-test"/>
|
|
<path path="build/temp/@{modulename}-${version}.jar.contents"/>
|
|
</path>
|
|
<compile-content srcdir="@{modulename}/src/test/java" jarname="@{modulename}-${version}-tests" classpathref="cp-@{modulename}-test-complete" />
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="compile-content">
|
|
<attribute name="srcdir"/>
|
|
<attribute name="jarname" description="Name of the jar whose content is being compiled (without .jar suffix)"/>
|
|
<attribute name="classpathref"/>
|
|
<sequential>
|
|
<mkdir dir="build/temp/@{jarname}-sources.jar.contents"/>
|
|
<copy failonerror="false" todir="build/temp/@{jarname}-sources.jar.contents">
|
|
<fileset dir="@{srcdir}"/>
|
|
</copy>
|
|
<mkdir dir="build/temp/@{jarname}.jar.contents"/>
|
|
<javac srcdir="build/temp/@{jarname}-sources.jar.contents"
|
|
destdir="build/temp/@{jarname}.jar.contents"
|
|
debug="${debug}" source="${javaversion}" target="${javaversion}" includeantruntime="false">
|
|
<classpath refid="@{classpathref}"/>
|
|
</javac>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="jar-module">
|
|
<attribute name="modulename" description="Name of the module to jar"/>
|
|
<sequential>
|
|
<make-manifest modulename="@{modulename}"/>
|
|
<jar-module-component modulename="@{modulename}"/>
|
|
<jar-module-component modulename="@{modulename}" suffix="-tests"/>
|
|
<jar-module-component modulename="@{modulename}" suffix="-sources"/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="jar-module-component">
|
|
<attribute name="modulename" description="Name of the module to jar"/>
|
|
<attribute name="suffix" default="" description="Name of the module to jar"/>
|
|
<sequential>
|
|
<copy file="LICENSE.txt" todir="build/temp/@{modulename}-${version}@{suffix}.jar.contents/META-INF"/>
|
|
<jar jarfile="build/@{modulename}-${version}@{suffix}.jar" manifest="build/temp/@{modulename}-${version}.jar.manifest/MANIFEST.MF">
|
|
<fileset dir="build/temp/@{modulename}-${version}@{suffix}.jar.contents"/>
|
|
</jar>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="generate-module-factory" description="Generate one class with all static imports">
|
|
<attribute name="modulename" description="Name of the module to jar"/>
|
|
<attribute name="configurationfile" description="xml configuration file"/>
|
|
<attribute name="targetclass" description="factory class to generate"/>
|
|
<attribute name="sources" description="comma-separated source directories"/>
|
|
<sequential>
|
|
<mkdir dir="build/temp/@{modulename}/generated-code"/>
|
|
<java classname="org.hamcrest.generator.config.XmlConfigurator" fork="yes" failonerror="yes">
|
|
<classpath path="build/hamcrest-generator-${version}.jar"/>
|
|
<classpath refid="cp-@{modulename}-main"/>
|
|
<classpath path="build/temp/@{modulename}-${version}.jar.contents"/>
|
|
<arg value="@{configurationfile}"/>
|
|
<arg value="@{sources}"/>
|
|
<arg value="@{targetclass}"/>
|
|
<arg value="build/temp/@{modulename}/generated-code"/>
|
|
</java>
|
|
|
|
<copy todir="build/temp/@{modulename}-${version}-sources.jar.contents">
|
|
<fileset dir="build/temp/@{modulename}/generated-code"/>
|
|
</copy>
|
|
<compile-module modulename="@{modulename}"/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="test-module" description="run unit tests.">
|
|
<attribute name="modulename" description="Name of the module to test"/>
|
|
<sequential>
|
|
<mkdir dir="build/temp/@{modulename}/test-wrk"/>
|
|
<junit printsummary="no" forkmode="once" tempdir="build/temp/@{modulename}/test-wrk" haltonfailure="${haltonfailure}" dir="@{modulename}">
|
|
<formatter type="brief" usefile="no"/>
|
|
<classpath refid="cp-@{modulename}-test-complete"/>
|
|
<classpath path="build/@{modulename}-${version}-tests.jar"/>
|
|
<batchtest fork="yes" todir="${build.dir}/testreport">
|
|
<zipfileset src="build/@{modulename}-${version}-tests.jar">
|
|
<include name="org/hamcrest/**/*Test.class"/>
|
|
<exclude name="**/Abstract*.class"/>
|
|
</zipfileset>
|
|
</batchtest>
|
|
</junit>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="javadoc-module" description="Generate javadoc for a module and build a Jar">
|
|
<attribute name="modulename" description="Name of the module to document"/>
|
|
<sequential>
|
|
<javadoc packagenames="org.hamcrest.*" sourcepath="build/temp/@{modulename}-${version}-sources.jar.contents"
|
|
destdir="build/temp/@{modulename}-${version}-javadoc.jar.contents" author="true" version="true"
|
|
use="true" windowtitle="Hamcrest" source="${javaversion}" failonerror="yes" defaultexcludes="yes">
|
|
<classpath refid="cp-@{modulename}-main"/>
|
|
</javadoc>
|
|
<jar-module-component modulename="@{modulename}" suffix="-javadoc"/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="bundle-module" description="Generate maven bundle jar for a module">
|
|
<attribute name="modulename" description="Name of the module to bundle"/>
|
|
<sequential>
|
|
<sign target="@{modulename}-${version}.pom"/>
|
|
<sign target="@{modulename}-${version}.jar"/>
|
|
<sign target="@{modulename}-${version}-javadoc.jar"/>
|
|
<sign target="@{modulename}-${version}-sources.jar"/>
|
|
<jar-bundle modulename="@{modulename}"/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="jar-bundle" description="Jar maven bundle contents">
|
|
<attribute name="modulename" description="Name of the module to create bundle jar for"/>
|
|
<sequential>
|
|
<jar destfile="build/maven-bundle-@{modulename}.jar">
|
|
<fileset dir="build"><include name="@{modulename}-${version}*"/></fileset>
|
|
</jar>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="sign" description="Sign a file with a gpg key">
|
|
<attribute name="target" description="Name of the resource to sign"/>
|
|
<sequential>
|
|
<exec executable="gpg" dir="build"><arg value="-ab"/><arg value="@{target}"/></exec>
|
|
</sequential>
|
|
</macrodef>
|
|
</project>
|