ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.24
Committed: Mon May 19 03:02:39 2003 UTC (20 years, 11 months ago) by dholmes
Content type: text/xml
Branch: MAIN
Changes since 1.23: +2 -1 lines
Log Message:
Added docsourcelevel attribute so that javac/javadoc don't user the same
attributes - thus allowing use of generics enabled javac while still having
plain old javadoc.

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