1<project name="testng" default="dev" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
2
3  <!-- ====================================================================== -->
4  <!-- TestNG build file                                                      -->
5  <!-- Created cbeust, April 26th, 2004                                       -->
6  <!-- ====================================================================== -->
7
8  <property file="build.properties" />
9  <property name="optimize" value="false" />
10
11  <!-- ====================================================================== -->
12  <!-- PREPARE                                                                -->
13  <!-- ====================================================================== -->
14  <target name="prepare" depends="retrieve-dependencies"
15          description="Performs all preparations required to build.">
16    <tstamp />
17    <mkdir dir="${build.dir}" />
18    <mkdir dir="${other.jars.dir}" />
19  </target>
20
21  <!-- ====================================================================== -->
22  <!-- DUMP                                                                   -->
23  <!-- ====================================================================== -->
24  <target name="dump" description="Dumps all properties." depends="prepare">
25    <echoproperties />
26  </target>
27
28	<!-- ====================================================================== -->
29  <!-- VALIDATE                                                               -->
30  <!-- ====================================================================== -->
31
32  <target name="validate" description="Validates the build environment.">
33    <!-- java greater than 1.6 required to build -->
34    <condition property="requiredJavaVersion">
35      <or>
36        <equals arg1="${ant.java.version}" arg2="1.9" />
37        <equals arg1="${ant.java.version}" arg2="1.8" />
38        <equals arg1="${ant.java.version}" arg2="1.7" />
39      </or>
40    </condition>
41    <fail unless="requiredJavaVersion"
42          message="Java version 1.7 required." />
43    <!-- validate ant version too ... -->
44  </target>
45
46  <!-- ==================================================================== -->
47  <!-- COPY-RESOURCES                                                       -->
48  <!-- ==================================================================== -->
49
50  <target name="copy-resources" description="Copies resources.">
51    <copy verbose="false"
52          file="${src.resources.dir}/testngtasks"
53          todir="${build.dir}" />
54    <copy todir="${build.dir}">
55      <fileset dir="${src.resources.dir}">
56        <exclude name="**/.*" />
57        <exclude name="**/CVS/*" />
58      </fileset>
59    </copy>
60  </target>
61
62
63  <target name="dev"
64          depends="prepare,validate,copy-resources,build,tests" />
65
66  <target name="all"
67          depends="prepare,validate,copy-resources,build,dist,tests,test-ant,javadocs,dist" />
68
69  <target name="build" depends="prepare,compile,testng-jar-all" />
70
71  <target name="testng-jar-all">
72    <antcall target="create-jar">
73      <param name="jar.file" value="${testng.jar}" />
74    </antcall>
75    <jar jarfile="${testng.jar}" update="true">
76      <zipfileset src="${lib.dir}/${beanshell.jar}" />
77      <zipfileset src="${lib.dir}/${jcommander.jar}" />
78      <zipfileset src="${lib.dir}/${yaml.jar}" />
79    </jar>
80
81  </target>
82
83  <target name="single">
84    <ant antfile="build-tests.xml" target="run:single"/>
85  </target>
86
87  <!-- ==================================================================== -->
88  <!-- Compile                                                              -->
89  <!-- ==================================================================== -->
90
91  <path id="compile2.cp">
92    <fileset dir="${lib.dir}" includes="${all.jar.files}" />
93  </path>
94
95  <target name="compile"
96          depends="prepare,copy-resources"
97          description="Compiles sources">
98    <echo message="                                 -- Compiling sources --" />
99
100    <echo>Src:${src.dir}</echo>
101    <javac classpathref="compile2.cp"
102           verbose="false"
103           target="1.7"
104           debug="true"
105           optimize="${optimize}"
106           destdir="${build.dir}">
107      <src path="${src.dir}" />
108    </javac>
109  </target>
110
111  <target name="compile:all" depends="compile" />
112
113  <target name="examples">
114    <ant inheritall="no" antfile="examples/build.xml" />
115  </target>
116
117  <target name="tests" depends="build" description="runs all JDK5 tests with JDK5 distro">
118    <ant inheritall="no" antfile="build-tests.xml" />
119  </target>
120
121  <target name="test-ant" depends="build">
122    <echo message="                                 -- Testing ant testng task functionality --" />
123    <ant inheritall="no" antfile="build-ant.xml" />
124  </target>
125
126  <!-- ==================================================================== -->
127  <!-- Documentation                                                        -->
128  <!-- ==================================================================== -->
129
130  <target name="javadocs" depends="build,javadocs-current" />
131
132  <target name="doclava">
133    <javadoc
134      docletpath="3rdparty/doclava-1.0.3.jar"
135      bootclasspath="${javahome}/jre/lib/rt.jar"
136      classpath="${testng.jar}:lib/${ant.jar}:lib/${guice2.jar}:lib/aopalliance-1.0.jar"
137      maxmemory="2048M"
138      additionalparam="-quiet"
139      verbose="false"
140      destdir="javadocs"
141      >
142      <fileset dir="${src.dir}" defaultexcludes="yes">
143        <include name="org/testng/*.java" />
144      </fileset>
145      <fileset dir="${src.dir}" defaultexcludes="yes">
146        <include name="org/testng/xml/Xml*.java" />
147      </fileset>
148      <fileset dir="${src.dir}" defaultexcludes="yes">
149        <include name="org/testng/annotations/**" />
150      </fileset>
151      <doclet name="com.google.doclava.Doclava">
152        <param name="-stubs" value="build/stubs" />
153        <param name="-hdf"/>
154        <param name="project.name" value="TestNG" />
155        <!-- versioning -->
156        <param name="-since"/>
157        <param name="doclava/previous.xml"/>
158        <param name="v1" />
159        <param name="-apiversion" value="v2"/>
160        <!-- federation -->
161        <param name="-federate" />
162        <param name="JDK"/>
163        <param name="http://download.oracle.com/javase/6/docs/api/index.html?"/>
164        <param name="-federationxml"/><param name="JDK"/>
165        <param name="http://doclava.googlecode.com/svn/static/api/openjdk-6.xml"/>
166      </doclet>
167    </javadoc>
168  </target>
169
170  <target name="javadocs-current">
171    <javadoc additionalparam="-quiet" destdir="javadocs" source="1.7" windowtitle="TestNG"
172      classpath="${testng.jar}" classpathref="compile2.cp" verbose="false">
173      <fileset dir="${src.dir}" defaultexcludes="yes">
174        <include name="org/testng/*.java" />
175      </fileset>
176      <fileset dir="${src.dir}" defaultexcludes="yes">
177        <include name="org/testng/xml/Xml*.java" />
178      </fileset>
179      <fileset dir="${src.dir}" defaultexcludes="yes">
180        <include name="org/testng/annotations/**" />
181      </fileset>
182    </javadoc>
183  </target>
184
185  <!-- ==================================================================== -->
186  <!-- Distribution                                                         -->
187  <!-- ==================================================================== -->
188
189  <target name="dist" depends="build,all-jar-flavors,dist-all-zip,eclipse" />
190
191  <target name="all-jar-flavors" depends="dist-junit,dist-nobsh-guice,dist-bsh-noguice,dist-nobsh-noguice,dist-testng-dist,dist-testng-javadoc" />
192
193  <target name="dist-junit">
194    <antcall target="create-jar">
195      <param name="jar.file" value="${other.jars.dir}/${testng.junit.jar}" />
196    </antcall>
197    <jar jarfile="${other.jars.dir}/${testng.junit.jar}" update="true">
198      <zipfileset src="${lib.dir}/${beanshell.jar}" />
199      <zipfileset src="${lib.dir}/${jcommander.jar}" />
200      <zipfileset src="${lib.dir}/${junit.jar}" />
201      <zipfileset src="${lib.dir}/${yaml.jar}" />
202    </jar>
203  </target>
204
205  <target name="dist-nobsh-guice">
206    <antcall target="create-jar">
207      <param name="jar.file" value="${other.jars.dir}/${testng.nobsh.guice.jar}" />
208    </antcall>
209    <jar jarfile="${other.jars.dir}/${testng.nobsh.guice.jar}" update="true">
210      <zipfileset src="${lib.dir}/${guice2.jar}" />
211      <zipfileset src="${lib.dir}/${jcommander.jar}" />
212      <zipfileset src="${lib.dir}/${junit.jar}" />
213    </jar>
214  </target>
215
216  <target name="dist-bsh-noguice">
217    <antcall target="create-jar">
218      <param name="jar.file" value="${other.jars.dir}/${testng.bsh.noguice.jar}" />
219    </antcall>
220    <jar jarfile="${other.jars.dir}/${testng.bsh.noguice.jar}" update="true">
221      <zipfileset src="${lib.dir}/${beanshell.jar}" />
222      <zipfileset src="${lib.dir}/${jcommander.jar}" />
223      <zipfileset src="${lib.dir}/${junit.jar}" />
224    </jar>
225  </target>
226
227  <target name="dist-nobsh-noguice">
228    <antcall target="create-jar">
229      <param name="jar.file" value="${other.jars.dir}/${testng.nobsh.noguice.jar}" />
230    </antcall>
231    <jar jarfile="${other.jars.dir}/${testng.bsh.noguice.jar}" update="true">
232      <zipfileset src="${lib.dir}/${jcommander.jar}" />
233      <zipfileset src="${lib.dir}/${junit.jar}" />
234    </jar>
235  </target>
236
237  <target name="dist-testng-dist">
238    <antcall target="create-jar">
239      <param name="jar.file" value="${other.jars.dir}/${testng.dist.jar}" />
240    </antcall>
241    <jar jarfile="${other.jars.dir}/${testng.dist.jar}" update="true">
242      <zipfileset src="${lib.dir}/${jcommander.jar}" />
243    </jar>
244  </target>
245
246  <target name="dist-testng-javadoc" depends="javadocs">
247    <zip destfile="${other.jars.dir}/${testng.javadoc.zip}">
248        <fileset dir="javadocs"/>
249    </zip>
250  </target>
251
252  <target name="create-jar" description="Create a jar file with the Testng classes and nothing else"
253          depends="compile">
254    <delete file="${jar.file}" />
255    <jar destfile="${jar.file}" >
256      <manifest>
257        <attribute name="Main-Class" value="org.testng.TestNG" />
258        <attribute name="Implementation-Version" value="${testng.version}-${DSTAMP}${TSTAMP}" />
259      </manifest>
260      <fileset dir="${build.dir}" />
261      <fileset file="TESTNG-${testng.version}" />
262    </jar>
263  </target>
264
265  <target name="dist-all-zip" depends="dist-prepare,javadocs">
266    <property name="zip.dir" value="testng-${testng.version}" />
267    <echo>Adding ${testng.fullname}</echo>
268    <zip zipfile="${testng.zip}">
269      <zipfileset prefix="${zip.dir}" dir="${target}">
270        <include name="${testng.fullname}.jar" />
271      </zipfileset>
272      <zipfileset prefix="${zip.dir}" dir="${basedir}" includesfile="FILES" />
273      <zipfileset dir="${other.jars.dir}" prefix="${zip.dir}/other-jars"/>
274      <zipfileset dir="javadocs" prefix="${zip.dir}/javadocs" />
275      <zipfileset dir="src" prefix="${zip.dir}/src" />
276      <zipfileset dir="spring" prefix="${zip.dir}/spring" />
277      <zipfileset dir="doc" prefix="${zip.dir}/doc" />
278      <zipfileset dir="${src.resources.dir}"
279               prefix="${zip.dir}/resources"
280            includes="**/*.css"/>
281    </zip>
282  </target>
283
284<!--
285  <target name="dist-maven-bundle" depends="dist-all-zip">
286    <mkdir dir="${build.maven-bundle.dir}" />
287    <copy file="bundle-pom.xml" tofile="${build.maven-bundle.dir}/pom.xml" overwrite="true">
288      <filterchain>
289        <expandproperties/>
290      </filterchain>
291    </copy>
292    <jar destfile="${build.maven-bundle.dir}/${sources.testng.jar}">
293      <fileset dir="${src.dir}" />
294    </jar>
295
296    <exec executable="gpg">
297      <arg value="- -yes" />
298      <arg value="-ab" />
299      <arg value="${testng.jar}" />
300    </exec>
301
302    <exec executable="gpg">
303      <arg value="- -yes" />
304      <arg value="-ab" />
305      <arg value="${build.maven-bundle.dir}/pom.xml" />
306    </exec>
307
308    <exec executable="gpg">
309      <arg value="- -yes" />
310      <arg value="-ab" />
311      <arg value="${build.maven-bundle.dir}/${sources.testng.jar}" />
312    </exec>
313
314    <jar destfile="${testng.maven-bundle}">
315      <fileset file="${build.maven-bundle.dir}/pom.xml" />
316      <fileset file="${build.maven-bundle.dir}/${sources.testng.jar}" />
317      <fileset file="${build.maven-bundle.dir}/*asc" />
318      <fileset file="${testng.jar}" />
319      <fileset file="${testng.jar}.asc" />
320    </jar>
321  </target>
322-->
323
324  <target name="dist-prepare" depends="update-readme">
325    <delete file="{other.jars.dir}/${testng.nobsh.jar}" />
326    <mkdir dir="${other.jars.dir}" />
327  </target>
328
329  <target name="update-readme">
330    <copy file="README.template" tofile="README.md" />
331    <replace file="README.md" token="${version}" value="${testng.version}" />
332    <touch file="TESTNG-${testng.version}" />
333  </target>
334
335  <target name="eclipse" description="Used by Cedric to build distributions">
336    <property name="jdk15.jar"
337              value="${testng-eclipse.dir}/lib/testng.jar" />
338
339    <delete file="${jdk15.jar}" />
340    <copy file="${testng.jar}" tofile="${jdk15.jar}" />
341
342    <!-- sources -->
343    <property name="sources" value="${testng-eclipse.dir}/lib/testng-sources.jar"/>
344    <echo>Sources: ${sources}</echo>
345    <jar destfile="${sources}" basedir="src/main/java/" />
346  </target>
347
348  <target name="ftp">
349    <!--
350          <ftp action="put"
351             server="beust.com"
352             remotedir="w/testng/test-output"
353             userid="${userid}"
354             password="${password}">
355              <fileset dir="c:\weblogic\dev\sandbox\cbeust\testng\test\test-output">
356                <include name="index.html" />
357                <include name="main.html" />
358                <include name="toc.html" />
359                <include name="*egression*" />
360             </fileset>
361        </ftp>
362      -->
363    <ftp action="put"
364         server="beust.com"
365         remotedir="w/testng"
366         userid="${userid}"
367         password="${password}">
368      <fileset dir="${root.dir}">
369        <include name="${testng.zip}" />
370        <include name="javadocs/**" />
371        <include name="testng-1.0.dtd" />
372      </fileset>
373      <fileset dir="${root.dir}/doc">
374        <include name="*.html" />
375      </fileset>
376    </ftp>
377
378  </target>
379
380  <target name="ftp2">
381    <ftp action="put"
382         server="beust.com"
383         remotedir="w/testng"
384         userid="${userid}"
385         password="${password}">
386      <fileset dir="${root.dir}/test">
387        <include name="test-output/*" />
388      </fileset>
389      <fileset dir="${root.dir}/test">
390        <include name="test-report/*" />
391      </fileset>
392    </ftp>
393  </target>
394
395  <target name="clean">
396    <delete dir="${build.dir}" />
397    <delete dir="${target}" />
398    <delete dir="${build.maven-bundle.dir}" />
399    <delete failonerror="false">
400      <fileset dir="." includes="testng*.jar,*.zip" />
401    </delete>
402    <delete dir="test-output" failonerror="false" />
403    <delete dir="test-output-tests" failonerror="false" />
404    <ant antfile="build-tests.xml" target="clean" />
405    <ant dir="examples" target="clean" />
406  </target>
407
408  <!-- ==================================================================== -->
409  <!-- Maven1/2 Distribution                                                -->
410  <!-- ==================================================================== -->
411
412<!--
413  <target name="maven-plugin">
414    <jar destfile="maven-testng-plugin-${testng-maven.version}.jar"
415         basedir="./maven/" />
416  </target>
417-->
418
419  <!-- ==================================================================== -->
420  <!-- Ivy                                                                  -->
421  <!-- ==================================================================== -->
422
423  <target name="retrieve-dependencies" description="Retrieve dependencies with ivy">
424    <ivy:retrieve log="quiet" />
425  </target>
426
427  <target name="publish">
428    <ivy:resolve />
429    <mkdir dir="dist/jars" />
430    <copy file="${testng.jar}" todir="dist/jars" />
431    <ivy:publish organisation="org.testng" resolver="local" overwrite="true"/>
432  </target>
433
434  <target name="pom">
435    <ivy:makepom ivyfile="ivy.xml" pomfile="ivy-pom.xml" />
436  </target>
437
438  <!-- ==================================================================== -->
439  <!-- Code coverage                                                        -->
440  <!-- ==================================================================== -->
441
442<!--
443  <property name="cobertura.dir" value="../cobertura-1.9.4.1" />
444
445  <path id="cobertura.classpath">
446      <fileset dir="${cobertura.dir}">
447          <include name="cobertura.jar" />
448          <include name="lib/**/*.jar" />
449      </fileset>
450  </path>
451
452  <taskdef classpathref="cobertura.classpath" resource="tasks.properties" />
453
454  <target name="coverage:create">
455    <cobertura-instrument classpath="cobertura-1.9.4.1/lib/*" todir="target/instrumented-classes">
456      <fileset dir="${build.dir}">
457        <include name="**/*.class" />
458      </fileset>
459    </cobertura-instrument>
460  </target>
461
462  <target name="coverage">
463    <cobertura-report srcdir="${src.dir}" destdir="target/coverage-report"/>
464  </target>
465-->
466
467</project>
468