| <project name="junit" default="dist" basedir="." |
| xmlns:artifact="antlib:org.apache.maven.artifact.ant"> |
| <tstamp /> |
| <taskdef resource="net/sf/antcontrib/antcontrib.properties"/> |
| |
| <property file="${user.home}/.junit.properties" /> |
| <property name="src" value="src/main/java" /> |
| <property name="target" location="target" /> |
| <property name="bin" location="${target}/main" /> |
| <property name="version-base" value="4.11" /> |
| <property name="version-status" value="-SNAPSHOT" /> |
| <property name="version" value="${version-base}${version-status}" /> |
| <property name="dist" value="junit${version}" /> |
| <property name="versionfile" value="${src}/junit/runner/Version.java" /> |
| <property name="zipfile" value="${dist}/${dist}.zip" /> |
| <property name="testsrc" location="src/test/java" /> |
| <property name="testbin" location="${target}/test/java" /> |
| <property name="unjarred" |
| value="**/*.jar, ${testfiles}, doc/**, README.html, .classpath, .project, cpl-v10.html" /> |
| |
| <property name="binjar" value="junit-${version}.jar" /> |
| <property name="srcjar" value="junit-${version}-src.jar" /> |
| <property name="docjar" value="junit-${version}-javadoc.jar" /> |
| |
| <property name="depjar" value="junit-dep-${version}.jar" /> |
| <property name="depsrcjar" value="junit-dep-${version}-src.jar" /> |
| <property name="depdocjar" value="junit-dep-${version}-javadoc.jar" /> |
| |
| <property name="javadocdir" location="${dist}/javadoc" /> |
| <property name="javadoczip" location="${dist}-javadoc.zip" /> |
| <property name="hamcrestlib" location="lib/hamcrest-core-1.3.jar" /> |
| <property name="hamcrestlibsources" location="lib/hamcrest-core-1.3-sources.jar" /> |
| <property name="hamcrestsrc" location="${dist}/temp.hamcrest.source" /> |
| |
| <property name="maven.deploy.goal" value="org.apache.maven.plugins:maven-gpg-plugin:1.1:sign-and-deploy-file" /> |
| |
| <target name="init"> |
| <tstamp/> |
| </target> |
| |
| <target name="versiontag" depends="init"> |
| <filter token="version" value="${version}" /> |
| |
| <copy |
| file="${versionfile}.template" |
| tofile="${versionfile}" |
| filtering="on" |
| overwrite="true" |
| /> |
| </target> |
| |
| <target name="clean"> |
| <!-- If two builds are made within a minute --> |
| <delete dir="${dist}" quiet="true" /> |
| <!-- Delete all previous temporary build artifacts --> |
| <delete dir="${target}" quiet="true" /> |
| |
| <delete file="${zipfile}" quiet="true"/> |
| <delete file="${javadoczip}" /> |
| </target> |
| |
| <macrodef name="junit_compilation"> |
| <attribute name="srcdir"/> |
| <attribute name="destdir"/> |
| <attribute name="classpath"/> |
| <sequential> |
| <mkdir dir="@{destdir}"/> |
| <javac |
| srcdir="@{srcdir}" |
| destdir="@{destdir}" |
| debug="on" |
| classpath="@{classpath}" |
| includeantruntime="false" |
| source="1.5" |
| target="1.5" |
| > |
| <compilerarg value="-Xlint:unchecked" /> |
| </javac> |
| </sequential> |
| </macrodef> |
| |
| <target name="build" depends="versiontag"> |
| <junit_compilation srcdir="${src}" destdir="${bin}" classpath="${hamcrestlib}"/> |
| <unjar src="${hamcrestlib}" dest="${bin}" /> |
| <junit_compilation srcdir="${testsrc}" destdir="${testbin}" classpath="${hamcrestlib};${bin}"/> |
| </target> |
| |
| <target name="jars" depends="build"> |
| <mkdir dir="${dist}" /> |
| <jar |
| jarfile="${dist}/${srcjar}" |
| basedir="${src}" |
| excludes="${unjarred}, **/*.class" |
| /> |
| <jar |
| jarfile="${dist}/${binjar}" |
| basedir="${bin}" |
| excludes="${unjarred}, **/*.java, build.xml" |
| /> |
| <jar |
| jarfile="${dist}/${depjar}" |
| basedir="${bin}" |
| excludes="${unjarred}, org/hamcrest/**, **/*.java, build.xml" |
| /> |
| </target> |
| |
| <target name="all.maven.jars" depends="jars,javadoc"> |
| <mkdir dir="${dist}" /> |
| <jar |
| jarfile="${dist}/${depsrcjar}" |
| basedir="${src}" |
| excludes="${unjarred}, **/*.class" |
| /> |
| <jar |
| jarfile="${dist}/${depdocjar}" |
| basedir="${javadocdir}" |
| excludes="${unjarred}, org/hamcrest/**" |
| /> |
| </target> |
| |
| <target name="samples-and-tests"> |
| <copy todir="${dist}"> |
| <fileset dir="${testbin}" /> |
| <fileset dir="${testsrc}" /> |
| </copy> |
| </target> |
| |
| <target name="unjar.hamcrest"> |
| <unjar src="${hamcrestlibsources}" dest="${hamcrestsrc}" /> |
| </target> |
| |
| <target name="release-notes"> |
| <property name="basename" value="doc/ReleaseNotes${version-base}" /> |
| <exec executable="perl" failonerror="true"> |
| <arg file="build/Markdown.pl"/> |
| <arg file="${basename}.md"/> |
| <redirector output="${basename}.html" /> |
| </exec> |
| </target> |
| |
| <target name="javadoc" depends="unjar.hamcrest"> |
| <javadoc destdir="${javadocdir}" |
| author="false" |
| version="false" |
| use="false" |
| windowtitle="JUnit API" |
| stylesheetfile="stylesheet.css" |
| > |
| <excludepackage name="junit.*" /> |
| <excludepackage name="org.junit.internal.*" /> |
| <excludepackage name="org.junit.experimental.theories.internal.*" /> |
| |
| <sourcepath location="${src}" /> |
| <sourcepath location="${hamcrestsrc}" /> |
| <link href="http://java.sun.com/javase/6/docs/api/" /> |
| </javadoc> |
| </target> |
| |
| <target name="javadoczip"> |
| <delete file="${javadoczip}" /> |
| <antcall target="javadoc" /> |
| <zip basedir="${javadocdir}" file="${javadoczip}" /> |
| </target> |
| |
| <target name="populate-dist" |
| depends="clean, build, jars, samples-and-tests, javadoc, release-notes" |
| > |
| <copy todir="${dist}/doc"> |
| <fileset dir="doc"/> |
| </copy> |
| <copy file="README.html" tofile="${dist}/README.html" /> |
| <copy file="BUILDING" tofile="${dist}/BUILDING" /> |
| <copy file="cpl-v10.html" tofile="${dist}/cpl-v10.html" /> |
| <copy file="build.xml" tofile="${dist}/build.xml" /> |
| </target> |
| |
| <macrodef name="run-dist-tests"> |
| <!-- Runs the tests against the built jar files --> |
| <element name="extra-args" implicit="yes" /> |
| <sequential> |
| <java classname="org.junit.runner.JUnitCore" fork="yes" failonerror="true"> |
| <extra-args /> |
| <arg value="org.junit.tests.AllTests"/> |
| <classpath> |
| <pathelement location="${dist}" /> |
| <pathelement location="${dist}/${binjar}" /> |
| </classpath> |
| </java> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="run-local-tests"> |
| <!-- Runs the tests against the local class files --> |
| <sequential> |
| <java classname="org.junit.runner.JUnitCore" fork="yes" failonerror="true"> |
| <arg value="org.junit.tests.AllTests"/> |
| <classpath> |
| <pathelement location="${bin}" /> |
| <pathelement location="${testbin}" /> |
| <pathelement location="${hamcrestlib}" /> |
| </classpath> |
| </java> |
| </sequential> |
| </macrodef> |
| |
| <target name="test" depends="build"> |
| <run-local-tests /> |
| </target> |
| |
| <target name="dist" depends="populate-dist"> |
| <run-dist-tests> |
| <jvmarg value="-Dignore.this=ignored"/> |
| </run-dist-tests> |
| </target> |
| |
| <target name="profile" depends="populate-dist"> |
| <run-dist-tests> |
| <jvmarg value="-agentlib:hprof=cpu=samples"/> |
| </run-dist-tests> |
| </target> |
| |
| <target name="zip" depends="dist"> |
| <zip zipfile="${zipfile}" basedir="." includes="${dist}/**" /> |
| </target> |
| |
| <target name="upload.to.sourceforge" depends="zip"> |
| <ftp server="upload.sourceforge.net" |
| userid="anonymous" |
| password="saff@mit.edu" |
| remotedir="incoming" |
| > |
| <fileset dir="${dist}" includes="*.jar" /> |
| <fileset file="${zipfile}" /> |
| </ftp> |
| <echo message="To upload docs, use build/upload_docs.sh" /> |
| </target> |
| |
| <!-- to do automatic build upload, you need the maven ant tasks jar. --> |
| <!-- therefore, you must run ant as ant -lib build/lib stage.maven --> |
| <macrodef name="push.maven.artifact"> |
| <attribute name="file" /> |
| <attribute name="pom" /> |
| <attribute name="packaging" /> |
| <attribute name="url" /> |
| <attribute name="repo.id" /> |
| <element name="artifact.args" implicit="true" optional="true" /> |
| <sequential> |
| <artifact:mvn failonerror="true"> |
| <arg value="${maven.deploy.goal}" /> |
| <arg value="-Durl=@{url}" /> |
| <arg value="-DrepositoryId=@{repo.id}" /> |
| <arg value="-DpomFile=@{pom}" /> |
| <arg value="-Dfile=@{file}" /> |
| <arg value="-Dpackaging=@{packaging}" /> |
| <artifact.args /> |
| <arg value="-Pgpg" /> |
| </artifact:mvn> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="push.maven.jar"> |
| <attribute name="jar" /> |
| <attribute name="pom" /> |
| <attribute name="url" /> |
| <attribute name="repo.id" /> |
| <element name="artifact.args" implicit="true" optional="true" /> |
| <sequential> |
| <echo message="Pushing JAR to Maven: @{jar} -> @{url}" /> |
| <push.maven.artifact file="@{jar}" pom="@{pom}" packaging="jar" |
| url="@{url}" repo.id="@{repo.id}"> |
| <artifact.args /> |
| </push.maven.artifact> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="push.maven.pom"> |
| <attribute name="pom" /> |
| <attribute name="url" /> |
| <attribute name="repo.id" /> |
| <element name="artifact.args" implicit="true" optional="true" /> |
| <sequential> |
| <echo message="Pushing POM to Maven: @{pom} -> @{url}" /> |
| <push.maven.artifact file="@{pom}" pom="@{pom}" packaging="pom" |
| url="@{url}" repo.id="@{repo.id}"> |
| <artifact.args /> |
| </push.maven.artifact> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="push.junit.maven.artifact"> |
| <attribute name="url" /> |
| <attribute name="repo.id" /> |
| <attribute name="is.snapshot" default="true" /> |
| <sequential> |
| <local name="m.prefix" /> |
| <property name="m.prefix" value="${dist}/junit-dep-${version}" /> |
| <local name="m.jar" /> |
| <property name="m.jar" value="${m.prefix}.jar" /> |
| <local name="m.sources.jar" /> |
| <property name="m.sources.jar" value="${m.prefix}-src.jar" /> |
| <local name="m.javadoc.jar" /> |
| <property name="m.javadoc.jar" value="${m.prefix}-javadoc.jar" /> |
| <local name="m.pom" /> |
| <property name="m.pom" value="${dist}/pom-junit.xml" /> |
| |
| <filter token="version" value="${version}" /> |
| <copy |
| file="build/maven/junit-pom-template.xml" |
| tofile="${m.pom}" |
| filtering="on" |
| overwrite="true" |
| /> |
| |
| <push.maven.jar jar="${m.jar}" pom="${m.pom}" |
| url="@{url}" repo.id="@{repo.id}" /> |
| |
| <if> |
| <equals arg1="@{is.snapshot}" arg2="false" /> |
| <then> |
| <push.maven.jar jar="${m.sources.jar}" pom="${m.pom}" |
| url="@{url}" repo.id="@{repo.id}"> |
| <arg value="-Dclassifier=sources" /> |
| </push.maven.jar> |
| <push.maven.jar jar="${m.javadoc.jar}" pom="${m.pom}" |
| url="@{url}" repo.id="@{repo.id}"> |
| <arg value="-Dclassifier=javadoc" /> |
| </push.maven.jar> |
| </then> |
| </if> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="push.junit-dep.maven.artifact"> |
| <attribute name="url" /> |
| <attribute name="repo.id" /> |
| <sequential> |
| <local name="m.pom" /> |
| <property name="m.pom" value="${dist}/pom-junit-dep.xml" /> |
| |
| <filter token="version" value="${version}" /> |
| <copy |
| file="build/maven/junit-dep-pom-template.xml" |
| tofile="${m.pom}" |
| filtering="on" |
| overwrite="true" |
| /> |
| |
| <push.maven.pom pom="${m.pom}" |
| url="@{url}" repo.id="@{repo.id}" /> |
| </sequential> |
| </macrodef> |
| |
| <target name="stage.maven" depends="all.maven.jars"> |
| <property name="stage.url" |
| value="https://oss.sonatype.org/service/local/staging/deploy/maven2/" /> |
| <property name="stage.repo.id" value="sonatype-nexus-staging" /> |
| |
| <push.junit.maven.artifact url="${stage.url}" |
| repo.id="${stage.repo.id}" |
| is.snapshot="false" /> |
| <push.junit-dep.maven.artifact url="${stage.url}" |
| repo.id="${stage.repo.id}" /> |
| </target> |
| |
| <target name="snapshot.maven" depends="all.maven.jars"> |
| <property name="snapshot.url" |
| value="https://oss.sonatype.org/content/repositories/snapshots/" /> |
| <property name="snapshot.repo.id" value="sonatype-nexus-snapshots" /> |
| |
| <push.junit.maven.artifact url="${snapshot.url}" |
| repo.id="${snapshot.repo.id}" /> |
| <push.junit-dep.maven.artifact url="${snapshot.url}" |
| repo.id="${snapshot.repo.id}" /> |
| </target> |
| |
| <target name="print.version"> |
| <echo message="${version}" /> |
| </target> |
| </project> |