ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.22
Committed: Wed May 14 21:30:37 2003 UTC (20 years, 11 months ago) by tim
Content type: text/xml
Branch: MAIN
Changes since 1.21: +11 -18 lines
Log Message:
Moved main source rooted at . to ./src/main
Moved test source rooted at ./etc/testcases to ./src/test

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