<project name="testng" default="dev" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant"> | |
<!-- ====================================================================== --> | |
<!-- TestNG build file --> | |
<!-- Created cbeust, April 26th, 2004 --> | |
<!-- ====================================================================== --> | |
<property file="build.properties" /> | |
<property name="optimize" value="false" /> | |
<property name="build.compiler" value="javac1.5" /> | |
<!-- ====================================================================== --> | |
<!-- PREPARE --> | |
<!-- ====================================================================== --> | |
<target name="prepare" depends="retrieve-dependencies" | |
description="Performs all preparations required to build."> | |
<tstamp /> | |
<mkdir dir="${build.dir}" /> | |
<mkdir dir="${other.jars.dir}" /> | |
</target> | |
<!-- ====================================================================== --> | |
<!-- DUMP --> | |
<!-- ====================================================================== --> | |
<target name="dump" description="Dumps all properties." depends="prepare"> | |
<echoproperties /> | |
</target> | |
<!-- ====================================================================== --> | |
<!-- VALIDATE --> | |
<!-- ====================================================================== --> | |
<target name="validate" description="Validates the build environment."> | |
<!-- java greater than 1.5 required to build --> | |
<condition property="requiredJavaVersion"> | |
<or> | |
<equals arg1="${ant.java.version}" arg2="1.5" /> | |
<equals arg1="${ant.java.version}" arg2="1.6" /> | |
</or> | |
</condition> | |
<fail unless="requiredJavaVersion" | |
message="Java version 1.5 required." /> | |
<!-- validate ant version too ... --> | |
</target> | |
<!-- ==================================================================== --> | |
<!-- COPY-RESOURCES --> | |
<!-- ==================================================================== --> | |
<target name="copy-resources" description="Copies resources."> | |
<copy verbose="false" | |
file="${src.resources.dir}/testngtasks" | |
todir="${build.dir}" /> | |
<copy todir="${build.dir}"> | |
<fileset dir="${src.resources.dir}"> | |
<exclude name="**/.*" /> | |
<exclude name="**/CVS/*" /> | |
</fileset> | |
</copy> | |
</target> | |
<target name="dev" | |
depends="prepare,validate,copy-resources,build,tests" /> | |
<target name="all" | |
depends="prepare,validate,copy-resources,build,dist,tests,test-ant,javadocs,dist" /> | |
<target name="build" depends="prepare,compile,testng-jar-all" /> | |
<target name="testng-jar-all"> | |
<antcall target="create-jar"> | |
<param name="jar.file" value="${testng.jar}" /> | |
</antcall> | |
<jar jarfile="${testng.jar}" update="true"> | |
<zipfileset src="${lib.dir}/${beanshell.jar}" /> | |
<zipfileset src="${lib.dir}/${jcommander.jar}" /> | |
<zipfileset src="${lib.dir}/${junit.jar}" /> | |
<zipfileset src="${lib.dir}/${yaml.jar}" /> | |
</jar> | |
</target> | |
<target name="single"> | |
<ant antfile="build-tests.xml" target="run:single"/> | |
</target> | |
<!-- ==================================================================== --> | |
<!-- Compile --> | |
<!-- ==================================================================== --> | |
<path id="compile2.cp"> | |
<fileset dir="${lib.dir}" includes="${all.jar.files}" /> | |
</path> | |
<target name="compile" | |
depends="prepare,copy-resources" | |
description="Compiles sources"> | |
<echo message=" -- Compiling sources --" /> | |
<echo>Src:${src.dir}</echo> | |
<javac classpathref="compile2.cp" | |
verbose="false" | |
target="1.5" | |
debug="true" | |
optimize="${optimize}" | |
destdir="${build.dir}"> | |
<src path="${src.dir}" /> | |
</javac> | |
</target> | |
<target name="compile:all" depends="compile" /> | |
<target name="examples"> | |
<ant inheritall="no" antfile="examples/build.xml" /> | |
</target> | |
<target name="tests" depends="compile" description="runs all JDK5 tests with JDK5 distro"> | |
<ant inheritall="no" antfile="build-tests.xml" /> | |
</target> | |
<target name="test-ant"> | |
<echo message=" -- Testing ant testng task functionality --" /> | |
<ant inheritall="no" antfile="build-ant.xml" /> | |
</target> | |
<!-- ==================================================================== --> | |
<!-- Documentation --> | |
<!-- ==================================================================== --> | |
<target name="javadocs" depends="javadocs-current" /> | |
<target name="doclava"> | |
<javadoc | |
docletpath="3rdparty/doclava-1.0.3.jar" | |
bootclasspath="${javahome}/jre/lib/rt.jar" | |
classpath="${testng.jar}:lib/${ant.jar}:lib/${guice2.jar}:lib/aopalliance-1.0.jar" | |
maxmemory="2048M" | |
additionalparam="-quiet" | |
verbose="false" | |
destdir="javadocs" | |
> | |
<fileset dir="${src.dir}" defaultexcludes="yes"> | |
<include name="org/testng/*.java" /> | |
</fileset> | |
<fileset dir="${src.dir}" defaultexcludes="yes"> | |
<include name="org/testng/xml/Xml*.java" /> | |
</fileset> | |
<fileset dir="${src.dir}" defaultexcludes="yes"> | |
<include name="org/testng/annotations/**" /> | |
</fileset> | |
<doclet name="com.google.doclava.Doclava"> | |
<param name="-stubs" value="build/stubs" /> | |
<param name="-hdf"/> | |
<param name="project.name" value="TestNG" /> | |
<!-- versioning --> | |
<param name="-since"/> | |
<param name="doclava/previous.xml"/> | |
<param name="v1" /> | |
<param name="-apiversion" value="v2"/> | |
<!-- federation --> | |
<param name="-federate" /> | |
<param name="JDK"/> | |
<param name="http://download.oracle.com/javase/6/docs/api/index.html?"/> | |
<param name="-federationxml"/><param name="JDK"/> | |
<param name="http://doclava.googlecode.com/svn/static/api/openjdk-6.xml"/> | |
</doclet> | |
</javadoc> | |
</target> | |
<target name="javadocs-current"> | |
<javadoc additionalparam="-quiet" destdir="javadocs" source="1.5" windowtitle="TestNG" | |
classpath="${testng.jar}" classpathref="compile2.cp" verbose="false"> | |
<fileset dir="${src.dir}" defaultexcludes="yes"> | |
<include name="org/testng/*.java" /> | |
</fileset> | |
<fileset dir="${src.dir}" defaultexcludes="yes"> | |
<include name="org/testng/xml/Xml*.java" /> | |
</fileset> | |
<fileset dir="${src.dir}" defaultexcludes="yes"> | |
<include name="org/testng/annotations/**" /> | |
</fileset> | |
</javadoc> | |
</target> | |
<!-- ==================================================================== --> | |
<!-- Distribution --> | |
<!-- ==================================================================== --> | |
<target name="dist" depends="build,all-jar-flavors,dist-all-zip,eclipse" /> | |
<target name="all-jar-flavors" depends="dist-nobsh-guice,dist-bsh-noguice,dist-nobsh-noguice" /> | |
<target name="dist-nobsh-guice"> | |
<antcall target="create-jar"> | |
<param name="jar.file" value="${other.jars.dir}/${testng.nobsh.guice.jar}" /> | |
</antcall> | |
<jar jarfile="${other.jars.dir}/${testng.nobsh.guice.jar}" update="true"> | |
<zipfileset src="${lib.dir}/${guice2.jar}" /> | |
<zipfileset src="${lib.dir}/${jcommander.jar}" /> | |
<zipfileset src="${lib.dir}/${junit.jar}" /> | |
</jar> | |
</target> | |
<target name="dist-bsh-noguice"> | |
<antcall target="create-jar"> | |
<param name="jar.file" value="${other.jars.dir}/${testng.bsh.noguice.jar}" /> | |
</antcall> | |
<jar jarfile="${other.jars.dir}/${testng.bsh.noguice.jar}" update="true"> | |
<zipfileset src="${lib.dir}/${beanshell.jar}" /> | |
<zipfileset src="${lib.dir}/${jcommander.jar}" /> | |
<zipfileset src="${lib.dir}/${junit.jar}" /> | |
</jar> | |
</target> | |
<target name="dist-nobsh-noguice"> | |
<antcall target="create-jar"> | |
<param name="jar.file" value="${other.jars.dir}/${testng.nobsh.noguice.jar}" /> | |
</antcall> | |
<jar jarfile="${other.jars.dir}/${testng.bsh.noguice.jar}" update="true"> | |
<zipfileset src="${lib.dir}/${jcommander.jar}" /> | |
<zipfileset src="${lib.dir}/${junit.jar}" /> | |
</jar> | |
</target> | |
<target name="create-jar" description="Create a jar file with the Testng classes and nothing else" > | |
<delete file="${jar.file}" /> | |
<jar destfile="${jar.file}" > | |
<manifest> | |
<attribute name="Main-Class" value="org.testng.TestNG" /> | |
<attribute name="Implementation-Version" value="${testng.version}-${DSTAMP}${TSTAMP}" /> | |
</manifest> | |
<fileset dir="${build.dir}" /> | |
<fileset file="TESTNG-${testng.version}" /> | |
</jar> | |
</target> | |
<target name="dist-all-zip" depends="dist-prepare,javadocs"> | |
<property name="zip.dir" value="testng-${testng.version}" /> | |
<echo>Adding ${testng.fullname}</echo> | |
<zip zipfile="${testng.zip}"> | |
<zipfileset prefix="${zip.dir}" dir="${target}"> | |
<include name="${testng.fullname}.jar" /> | |
</zipfileset> | |
<zipfileset prefix="${zip.dir}" dir="${basedir}" includesfile="FILES" /> | |
<zipfileset dir="${other.jars.dir}" prefix="${zip.dir}/${other.jars.dir}"/> | |
<zipfileset dir="javadocs" prefix="${zip.dir}/javadocs" /> | |
<zipfileset dir="src" prefix="${zip.dir}/src" /> | |
<zipfileset dir="spring" prefix="${zip.dir}/spring" /> | |
<zipfileset dir="doc" prefix="${zip.dir}/doc" /> | |
<zipfileset dir="${src.resources.dir}" | |
prefix="${zip.dir}/resources" | |
includes="**/*.css"/> | |
</zip> | |
</target> | |
<!-- | |
<target name="dist-maven-bundle" depends="dist-all-zip"> | |
<mkdir dir="${build.maven-bundle.dir}" /> | |
<copy file="bundle-pom.xml" tofile="${build.maven-bundle.dir}/pom.xml" overwrite="true"> | |
<filterchain> | |
<expandproperties/> | |
</filterchain> | |
</copy> | |
<jar destfile="${build.maven-bundle.dir}/${sources.testng.jar}"> | |
<fileset dir="${src.dir}" /> | |
</jar> | |
<exec executable="gpg"> | |
<arg value="- -yes" /> | |
<arg value="-ab" /> | |
<arg value="${testng.jar}" /> | |
</exec> | |
<exec executable="gpg"> | |
<arg value="- -yes" /> | |
<arg value="-ab" /> | |
<arg value="${build.maven-bundle.dir}/pom.xml" /> | |
</exec> | |
<exec executable="gpg"> | |
<arg value="- -yes" /> | |
<arg value="-ab" /> | |
<arg value="${build.maven-bundle.dir}/${sources.testng.jar}" /> | |
</exec> | |
<jar destfile="${testng.maven-bundle}"> | |
<fileset file="${build.maven-bundle.dir}/pom.xml" /> | |
<fileset file="${build.maven-bundle.dir}/${sources.testng.jar}" /> | |
<fileset file="${build.maven-bundle.dir}/*asc" /> | |
<fileset file="${testng.jar}" /> | |
<fileset file="${testng.jar}.asc" /> | |
</jar> | |
</target> | |
--> | |
<target name="dist-prepare" depends="update-readme"> | |
<delete file="{other.jars.dir}/${testng.nobsh.jar}" /> | |
<mkdir dir="${other.jars.dir}" /> | |
</target> | |
<target name="update-readme"> | |
<copy file="README.template" tofile="README" /> | |
<replace file="README" token="${version}" value="${testng.version}" /> | |
<touch file="TESTNG-${testng.version}" /> | |
</target> | |
<target name="eclipse" description="Used by Cedric to build distributions"> | |
<property name="jdk15.jar" | |
value="${testng-eclipse.dir}/lib/testng.jar" /> | |
<delete file="${jdk15.jar}" /> | |
<copy file="${testng.jar}" tofile="${jdk15.jar}" /> | |
</target> | |
<target name="ftp"> | |
<!-- | |
<ftp action="put" | |
server="beust.com" | |
remotedir="w/testng/test-output" | |
userid="${userid}" | |
password="${password}"> | |
<fileset dir="c:\weblogic\dev\sandbox\cbeust\testng\test\test-output"> | |
<include name="index.html" /> | |
<include name="main.html" /> | |
<include name="toc.html" /> | |
<include name="*egression*" /> | |
</fileset> | |
</ftp> | |
--> | |
<ftp action="put" | |
server="beust.com" | |
remotedir="w/testng" | |
userid="${userid}" | |
password="${password}"> | |
<fileset dir="${root.dir}"> | |
<include name="${testng.zip}" /> | |
<include name="javadocs/**" /> | |
<include name="testng-1.0.dtd" /> | |
</fileset> | |
<fileset dir="${root.dir}/doc"> | |
<include name="*.html" /> | |
</fileset> | |
</ftp> | |
</target> | |
<target name="ftp2"> | |
<ftp action="put" | |
server="beust.com" | |
remotedir="w/testng" | |
userid="${userid}" | |
password="${password}"> | |
<fileset dir="${root.dir}/test"> | |
<include name="test-output/*" /> | |
</fileset> | |
<fileset dir="${root.dir}/test"> | |
<include name="test-report/*" /> | |
</fileset> | |
</ftp> | |
</target> | |
<target name="clean"> | |
<delete dir="${build.dir}" /> | |
<delete dir="${target}" /> | |
<delete dir="${build.maven-bundle.dir}" /> | |
<delete failonerror="false"> | |
<fileset dir="." includes="testng*.jar,*.zip" /> | |
</delete> | |
<delete dir="test-output" failonerror="false" /> | |
<delete dir="test-output-tests" failonerror="false" /> | |
<ant antfile="build-tests.xml" target="clean" /> | |
<ant dir="examples" target="clean" /> | |
</target> | |
<!-- ==================================================================== --> | |
<!-- Maven1/2 Distribution --> | |
<!-- ==================================================================== --> | |
<!-- | |
<target name="maven-plugin"> | |
<jar destfile="maven-testng-plugin-${testng-maven.version}.jar" | |
basedir="./maven/" /> | |
</target> | |
--> | |
<!-- ==================================================================== --> | |
<!-- Ivy --> | |
<!-- ==================================================================== --> | |
<target name="retrieve-dependencies" description="Retrieve dependencies with ivy"> | |
<ivy:retrieve log="quiet" /> | |
</target> | |
<target name="publish"> | |
<ivy:resolve /> | |
<mkdir dir="dist/jars" /> | |
<copy file="${testng.jar}" todir="dist/jars" /> | |
<ivy:publish organisation="org.testng" resolver="local" overwrite="true"/> | |
</target> | |
<target name="pom"> | |
<ivy:makepom ivyfile="ivy.xml" pomfile="ivy-pom.xml" /> | |
</target> | |
<!-- ==================================================================== --> | |
<!-- Code coverage --> | |
<!-- ==================================================================== --> | |
<property name="cobertura.dir" value="../cobertura-1.9.4.1" /> | |
<path id="cobertura.classpath"> | |
<fileset dir="${cobertura.dir}"> | |
<include name="cobertura.jar" /> | |
<include name="lib/**/*.jar" /> | |
</fileset> | |
</path> | |
<taskdef classpathref="cobertura.classpath" resource="tasks.properties" /> | |
<target name="coverage:create"> | |
<cobertura-instrument classpath="cobertura-1.9.4.1/lib/*" todir="target/instrumented-classes"> | |
<fileset dir="${build.dir}"> | |
<include name="**/*.class" /> | |
</fileset> | |
</cobertura-instrument> | |
</target> | |
<target name="coverage"> | |
<cobertura-report srcdir="${src.dir}" destdir="target/coverage-report"/> | |
</target> | |
</project> |