ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.23
Committed: Sat May 17 21:20:50 2003 UTC (20 years, 11 months ago) by tim
Content type: text/xml
Branch: MAIN
Changes since 1.22: +3 -1 lines
Log Message:
Allow user specific restriction of testcases.

File Contents

# Content
1 <project name="jsr166" default="usage">
2
3 <description>
4 Build file for JSR-166
5
6 JUnit 1.8 must be in ${ant.home}/lib for the test target to work.
7 </description>
8
9
10 <target name="usage" description="Prints this message">
11 <echo>
12 ant [target], where target is one of:
13
14 usage (default) Prints this message
15 compile Compiles all sources to build folder
16 jar Builds library jar from compiled sources
17 test Runs all tests (requires JUnit 1.8 in ${ant.home}/lib)
18 docs Builds javadocs with custom tags to build folder
19 dist-docs Builds javadocs without custom tags to dist folder
20 dist Puts all distributable products in single hierarchy
21
22 clean Removes all build products
23 dist-clean Removes all build and distribution products
24
25 checkstyle Reports on style errors in Java source (verbose, mostly chaff)
26 doccheck Reports on javadoc style errors (not working yet)
27 </echo>
28 </target>
29
30 <property file="user.properties"/>
31 <property name="testcase" value="*"/>
32
33 <!-- Compilation options -->
34 <property name="build.sourcelevel" value="1.5"/>
35 <property name="build.debug" value="true"/>
36 <property name="build.debuglevel" value="source,lines,vars"/>
37 <property name="build.deprecation" value="false"/>
38 <!--
39 <property name="build.warnings" value="true"/>
40 -->
41
42 <!-- Build locations -->
43 <property name="build.dir" location="build"/>
44 <property name="build.classes.dir" location="${build.dir}/classes"/>
45 <property name="build.testcases.dir" location="${build.dir}/testcases"/>
46 <property name="build.lib.dir" location="${build.dir}/lib"/>
47 <property name="build.ant.dir" location="${build.dir}/ant"/>
48 <property name="build.javadocs.dir" location="${build.dir}/javadocs"/>
49 <property name="build.stripped.dir" location="${build.dir}/stripped"/>
50 <property name="build.reports.dir" location="${build.dir}/reports"/>
51 <property name="build.doccheck.dir" location="${build.dir}/doccheck"/>
52 <property name="build.filter.src.dir" location="${build.dir}/filtersrc"/>
53
54 <!-- Source locations -->
55 <property name="src.dir" location="${basedir}/src/main"/>
56 <property name="test.src.dir" location="${basedir}/src/test"/>
57 <property name="ant.src.dir" location="${basedir}/etc/ant"/>
58 <property name="stylesheet.dir" location="${basedir}/etc/xsl"/>
59 <property name="lib.dir" location="${basedir}/lib"/>
60 <property name="dist.dir" location="${basedir}/dist"/>
61
62 <!-- Distribution locations -->
63 <property name="dist.javadocs.dir" location="${dist.dir}/docs"/>
64
65 <!-- Jar locations -->
66 <property name="product.jar" location="${build.lib.dir}/jsr166.jar"/>
67 <property name="javac.jar" location="${lib.dir}/javac.jar"/>
68 <property name="collect.jar" location="${lib.dir}/collect.jar"/>
69 <property name="junit.jar" location="${lib.dir}/junit.jar"/>
70 <property name="rt.jar" location="${java.home}/lib/rt.jar"/>
71
72 <property name="javac.args" value='-J-Xbootclasspath/p:${javac.jar}'/>
73
74 <path id="javac.bootclasspath">
75 <pathelement location="${collect.jar}"/>
76 <pathelement location="${rt.jar}"/>
77 </path>
78
79 <path id="test.classpath">
80 <pathelement location="${product.jar}"/>
81 </path>
82
83
84 <!-- Main targets -->
85
86 <target name="compile" depends="init"
87 description="Compiles all sources to build folder">
88 <mkdir dir="${build.classes.dir}"/>
89 <javac srcdir="${src.dir}"
90 destdir="${build.classes.dir}"
91 debug="${build.debug}"
92 debuglevel="${build.debuglevel}"
93 deprecation="${build.deprecation}"
94 source="${build.sourcelevel}"
95 fork="true">
96
97 <bootclasspath refid="javac.bootclasspath"/>
98 <compilerarg line="${javac.args} ${build.warnings.option}"/>
99
100 </javac>
101 </target>
102
103
104 <target name="jar" depends="compile"
105 description="Builds library jar from compiled sources">
106 <mkdir dir="${build.lib.dir}"/>
107 <jar basedir="${build.classes.dir}"
108 destfile="${product.jar}"
109 />
110 </target>
111
112
113 <target name="test" depends="init, check-junit, report-tests"
114 description="Runs all tests (requires JUnit 1.8 in ${ant.home}/lib)"/>
115
116
117 <target name="checkstyle" depends="filter-src"
118 description="Reports on style errors in Java source (verbose, mostly chaff)">
119 <taskdef resource="checkstyletask.properties"
120 classpath="${lib.dir}/checkstyle-all-2.4.jar"/>
121
122 <checkstyle>
123 <formatter type="plain"/> <!-- also available: type="xml" -->
124 <fileset dir="${build.filter.src.dir}" includes="**/*.java"/>
125 </checkstyle>
126 </target>
127
128
129 <target name="doccheck" depends="filter-src"
130 description="Reports on javadoc style errors (not working yet)">
131 <delete dir="${build.doccheck.dir}"/>
132 <mkdir dir="${build.doccheck.dir}"/>
133 <javadoc doclet="com.sun.tools.doclets.doccheck.DocCheck"
134 docletpath="${lib.dir}/doccheck.jar"
135 destdir="${build.doccheck.dir}">
136 <packageset dir="${build.filter.src.dir}"/>
137 </javadoc>
138 </target>
139
140
141 <target name="docs" depends="filter-src"
142 description="Builds javadocs with custom tags to build folder">
143 <delete dir="${build.javadocs.dir}"/>
144 <mkdir dir="${build.javadocs.dir}"/>
145 <javadoc destdir="${build.javadocs.dir}"
146 link="http://java.sun.com/j2se/1.4.1/docs/api"
147 overview="${src.dir}/intro.html"
148 source="${build.sourcelevel}">
149
150 <tag name="revised" description="Last revised:"/>
151 <tag name="spec" description="Specified by:"/>
152 <tag name="editor" description="Last edited by:"/>
153 <tag name="fixme" description="FIX ME:"/>
154 <packageset dir="${build.filter.src.dir}"/>
155
156 </javadoc>
157 </target>
158
159
160 <!--
161 # javac -s doesn't reliably generate compilable code. It generates
162 # bridge methods (marked as "synthetic") that can have identical
163 # signatures to existing methods except for the return value.
164 -->
165 <target name="strip" depends="init">
166 <mkdir dir="${build.stripped.dir}"/>
167 <javac srcdir="${src.dir}"
168 destdir="${build.stripped.dir}"
169 debug="${build.debug}"
170 debuglevel="${build.debuglevel}"
171 deprecation="${build.deprecation}"
172 source="${build.sourcelevel}"
173 fork="true">
174
175 <bootclasspath refid="javac.bootclasspath"/>
176 <compilerarg line="${javac.args} ${build.warnings.option} -s"/>
177
178 </javac>
179 </target>
180
181
182 <target name="dist" depends="init, dist-clean, dist-jar, dist-docs"
183 description="Puts all distributable products in single hierarchy"/>
184
185
186 <target name="clean"
187 description="Removes all build products">
188 <delete dir="${build.dir}"/>
189 <delete dir="${build.classes.dir}"/>
190 <delete dir="${build.lib.dir}"/>
191 </target>
192
193
194 <target name="dist-clean"
195 description="Removes all build and distribution products">
196 <delete dir="${dist.dir}"/>
197 </target>
198
199
200 <!-- Anthill targets -->
201
202 <!-- Should really run the tests instead of just the jar target -->
203 <target name="anthill-build" depends="jar, docs, dist-docs"/>
204
205 <target name="anthill-publish">
206 <copy todir="${deployDir}/docs/private">
207 <fileset dir="${build.javadocs.dir}"/>
208 </copy>
209 <copy todir="${deployDir}/docs/public">
210 <fileset dir="${dist.javadocs.dir}"/>
211 </copy>
212 <copy tofile="${deployDir}/index.html"
213 file="${basedir}/etc/anthill-index.html"/>
214 <copy todir="${deployDir}/notes">
215 <fileset dir="${basedir}/etc/notes"/>
216 </copy>
217 </target>
218
219
220 <!-- Internal targets -->
221
222 <target name="set-warnings-if" if="build.warnings">
223 <property name="build.warnings.option" value="-warnunchecked"/>
224 </target>
225
226
227 <target name="set-warnings-unless" unless="build.warnings">
228 <property name="build.warnings.option" value=""/>
229 </target>
230
231
232 <target name="init" depends="set-warnings-if, set-warnings-unless">
233 <!-- Version is kept in a separate file -->
234 <loadfile property="version" srcFile="version.properties"/>
235 <echo>Building JSR-166 version ${version}</echo>
236 </target>
237
238
239 <target name="dist-jar" depends="clean, jar">
240 <copy file="${product.jar}" todir="${dist.dir}"/>
241 </target>
242
243
244 <target name="dist-docs" depends="filter-src"
245 description="Builds javadocs without custom tags to dist folder">
246 <delete dir="${dist.javadocs.dir}"/>
247 <mkdir dir="${dist.javadocs.dir}"/>
248 <javadoc destdir="${dist.javadocs.dir}"
249 link="http://java.sun.com/j2se/1.4.1/docs/api"
250 overview="${src.dir}/intro.html"
251 source="${build.sourcelevel}">
252
253 <packageset dir="${build.filter.src.dir}"/>
254
255 </javadoc>
256 </target>
257
258
259 <target name="compile-ant-filter" depends="init">
260 <mkdir dir="${build.ant.dir}"/>
261 <javac srcdir="${ant.src.dir}"
262 destdir="${build.ant.dir}"
263 source="1.4"
264 />
265 </target>
266
267
268 <target name="filter-src" depends="compile-ant-filter">
269 <mkdir dir="${build.filter.src.dir}"/>
270 <copy todir="${build.filter.src.dir}">
271 <fileset dir="${src.dir}">
272 <include name="**/*.java"/>
273 </fileset>
274 <filterchain>
275 <filterreader classname="jsr166.ant.filters.ReplaceFilter"
276 classpath="${build.ant.dir}">
277 <!--
278 # These arguments are to get rid of angle-bracketed type
279 # parameters so that javadoc can run on the result. The
280 # following heuristic that seems to work:
281 #
282 # For all lines not starting with space(s)-asterisk-space(s),
283 # replace <something> with a space, where there may be more
284 # than one right angle bracket at the end, and "something"
285 # must not contain parens or pipes. (This may need some
286 # tweaking.)
287 -->
288 <param name="notmatching" value="^\s+\*\s.*$"/>
289 <param name="pattern" value="&lt;[^|>()]+?>+"/>
290 <param name="replacement" value=" "/>
291 </filterreader>
292 <filterreader classname="jsr166.ant.filters.ReplaceFilter"
293 classpath="${build.ant.dir}">
294 <!--
295 # These arguments are to uncomment lines beginning with
296 # "//@" so that javadoc can see imports that are needed
297 # to resolve links but that shouldn't be in the compiled
298 # code.
299 -->
300 <param name="matching" value="^//@.*$"/>
301 <param name="pattern" value="^//@"/>
302 <param name="replacement" value=""/>
303 </filterreader>
304 </filterchain>
305 </copy>
306 </target>
307
308
309 <target name="compile-tests" depends="jar">
310 <mkdir dir="${build.testcases.dir}"/>
311 <javac srcdir="${test.src.dir}"
312 destdir="${build.testcases.dir}"
313 debug="${build.debug}"
314 debuglevel="${build.debuglevel}"
315 deprecation="${build.deprecation}"
316 source="${build.sourcelevel}"
317 fork="true">
318
319 <bootclasspath refid="javac.bootclasspath"/>
320 <compilerarg line="${javac.args} ${build.warnings.option}"/>
321 <classpath refid="test.classpath"/>
322
323 </javac>
324 </target>
325
326
327 <target name="run-tests" depends="compile-tests">
328 <mkdir dir="${build.reports.dir}"/>
329 <junit printsummary="true"
330 showoutput="true"
331 errorProperty="junit.failed"
332 failureProperty="junit.failed"
333 dir="${build.reports.dir}"
334 fork="true">
335
336 <!--
337 ! This nastiness is so JUnit can test classes we are inserting
338 ! into the java.* packages.
339 -->
340 <jvmarg value="-Xbootclasspath/p:${product.jar};${build.testcases.dir};${junit.jar}"/>
341
342 <formatter type="xml"/>
343
344 <batchtest todir="${build.reports.dir}">
345 <fileset dir="${test.src.dir}">
346 <include name="**/${testcase}Test.java"/>
347 </fileset>
348 </batchtest>
349
350 </junit>
351 </target>
352
353
354 <target name="report-tests" depends="run-tests">
355 <!-- Sets junit.report.format to frames if Xalan is present,
356 otherwise sets it to noframes. -->
357 <available property="junit.report.format"
358 value="frames"
359 classname="org.apache.xalan.lib.Redirect"
360 />
361 <property name="junit.report.format" value="noframes"/>
362
363 <junitreport todir="${build.reports.dir}">
364 <fileset dir="${build.reports.dir}">
365 <include name="TEST-*.xml"/>
366 </fileset>
367 <report styledir="${stylesheet.dir}"
368 format="${junit.report.format}"
369 todir="${build.reports.dir}"
370 />
371 </junitreport>
372
373 <fail message="Test Cases Failed" if="junit.failed"/>
374 </target>
375
376
377 <target name="check-junit">
378 <!-- FIXME: this test isn't specific enough -->
379 <available property="junit.available"
380 classname="junit.framework.TestCase"/>
381 <fail message="Need JUnit 3.8 to run tests" unless="junit.available"/>
382 </target>
383
384
385 </project>