<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" />
<!-- ====================================================================== -->
<!-- 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.6 required to build -->
<condition property="requiredJavaVersion">
<or>
<equals arg1="${ant.java.version}" arg2="1.9" />
<equals arg1="${ant.java.version}" arg2="1.8" />
<equals arg1="${ant.java.version}" arg2="1.7" />
</or>
</condition>
<fail unless="requiredJavaVersion"
message="Java version 1.7 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}/${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.7"
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="build" description="runs all JDK5 tests with JDK5 distro">
<ant inheritall="no" antfile="build-tests.xml" />
</target>
<target name="test-ant" depends="build">
<echo message=" -- Testing ant testng task functionality --" />
<ant inheritall="no" antfile="build-ant.xml" />
</target>
<!-- ==================================================================== -->
<!-- Documentation -->
<!-- ==================================================================== -->
<target name="javadocs" depends="build,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.7" 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-junit,dist-nobsh-guice,dist-bsh-noguice,dist-nobsh-noguice,dist-testng-dist,dist-testng-javadoc" />
<target name="dist-junit">
<antcall target="create-jar">
<param name="jar.file" value="${other.jars.dir}/${testng.junit.jar}" />
</antcall>
<jar jarfile="${other.jars.dir}/${testng.junit.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="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="dist-testng-dist">
<antcall target="create-jar">
<param name="jar.file" value="${other.jars.dir}/${testng.dist.jar}" />
</antcall>
<jar jarfile="${other.jars.dir}/${testng.dist.jar}" update="true">
<zipfileset src="${lib.dir}/${jcommander.jar}" />
</jar>
</target>
<target name="dist-testng-javadoc" depends="javadocs">
<zip destfile="${other.jars.dir}/${testng.javadoc.zip}">
<fileset dir="javadocs"/>
</zip>
</target>
<target name="create-jar" description="Create a jar file with the Testng classes and nothing else"
depends="compile">
<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"/>
<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.md" />
<replace file="README.md" 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}" />
<!-- sources -->
<property name="sources" value="${testng-eclipse.dir}/lib/testng-sources.jar"/>
<echo>Sources: ${sources}</echo>
<jar destfile="${sources}" basedir="src/main/java/" />
</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>