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

# User Rev Content
1 tim 1.18 <project name="jsr166" default="usage">
2 tim 1.1
3     <description>
4 tim 1.18 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 tim 1.11
9 tim 1.3
10 tim 1.18 <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 tim 1.11
30 tim 1.23 <property file="user.properties"/>
31     <property name="testcase" value="*"/>
32 tim 1.1
33     <!-- Compilation options -->
34 tim 1.11 <property name="build.sourcelevel" value="1.5"/>
35 tim 1.1 <property name="build.debug" value="true"/>
36     <property name="build.debuglevel" value="source,lines,vars"/>
37 tim 1.13 <property name="build.deprecation" value="false"/>
38     <!--
39 tim 1.11 <property name="build.warnings" value="true"/>
40 tim 1.13 -->
41 tim 1.1
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 tim 1.9 <property name="build.javadocs.dir" location="${build.dir}/javadocs"/>
49 tim 1.16 <property name="build.stripped.dir" location="${build.dir}/stripped"/>
50 tim 1.1 <property name="build.reports.dir" location="${build.dir}/reports"/>
51 tim 1.16 <property name="build.doccheck.dir" location="${build.dir}/doccheck"/>
52 tim 1.1 <property name="build.filter.src.dir" location="${build.dir}/filtersrc"/>
53    
54     <!-- Source locations -->
55 tim 1.22 <property name="src.dir" location="${basedir}/src/main"/>
56     <property name="test.src.dir" location="${basedir}/src/test"/>
57 tim 1.1 <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 tim 1.9 <property name="dist.dir" location="${basedir}/dist"/>
61    
62     <!-- Distribution locations -->
63     <property name="dist.javadocs.dir" location="${dist.dir}/docs"/>
64 tim 1.1
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 tim 1.11 <property name="javac.args" value='-J-Xbootclasspath/p:${javac.jar}'/>
73 tim 1.1
74 tim 1.11 <path id="javac.bootclasspath">
75 tim 1.2 <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 tim 1.1
84 tim 1.11 <!-- Main targets -->
85    
86     <target name="compile" depends="init"
87     description="Compiles all sources to build folder">
88 tim 1.1 <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 tim 1.11 <bootclasspath refid="javac.bootclasspath"/>
98     <compilerarg line="${javac.args} ${build.warnings.option}"/>
99 tim 1.1
100     </javac>
101     </target>
102    
103    
104 tim 1.11 <target name="jar" depends="compile"
105     description="Builds library jar from compiled sources">
106 tim 1.1 <mkdir dir="${build.lib.dir}"/>
107     <jar basedir="${build.classes.dir}"
108     destfile="${product.jar}"
109     />
110     </target>
111    
112    
113 tim 1.18 <target name="test" depends="init, check-junit, report-tests"
114     description="Runs all tests (requires JUnit 1.8 in ${ant.home}/lib)"/>
115 tim 1.1
116    
117 tim 1.16 <target name="checkstyle" depends="filter-src"
118 tim 1.18 description="Reports on style errors in Java source (verbose, mostly chaff)">
119 tim 1.15 <taskdef resource="checkstyletask.properties"
120     classpath="${lib.dir}/checkstyle-all-2.4.jar"/>
121    
122     <checkstyle>
123 tim 1.16 <formatter type="plain"/> <!-- also available: type="xml" -->
124 tim 1.15 <fileset dir="${build.filter.src.dir}" includes="**/*.java"/>
125     </checkstyle>
126     </target>
127    
128 tim 1.16
129     <target name="doccheck" depends="filter-src"
130 tim 1.18 description="Reports on javadoc style errors (not working yet)">
131 tim 1.16 <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 tim 1.22 <packageset dir="${build.filter.src.dir}"/>
137 tim 1.16 </javadoc>
138     </target>
139    
140    
141     <target name="docs" depends="filter-src"
142 tim 1.9 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 tim 1.8 link="http://java.sun.com/j2se/1.4.1/docs/api"
147     overview="${src.dir}/intro.html"
148     source="${build.sourcelevel}">
149    
150 tim 1.9 <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 tim 1.22 <packageset dir="${build.filter.src.dir}"/>
155 tim 1.8
156     </javadoc>
157     </target>
158    
159    
160 tim 1.22 <!--
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 tim 1.16 <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 tim 1.1
185    
186 tim 1.11 <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 tim 1.1 </target>
192    
193    
194 tim 1.11 <target name="dist-clean"
195     description="Removes all build and distribution products">
196     <delete dir="${dist.dir}"/>
197 tim 1.9 </target>
198 tim 1.10
199    
200 tim 1.14 <!-- Anthill targets -->
201    
202     <!-- Should really run the tests instead of just the jar target -->
203 tim 1.18 <target name="anthill-build" depends="jar, docs, dist-docs"/>
204 tim 1.14
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 tim 1.17 <copy tofile="${deployDir}/index.html"
213     file="${basedir}/etc/anthill-index.html"/>
214 tim 1.19 <copy todir="${deployDir}/notes">
215     <fileset dir="${basedir}/etc/notes"/>
216     </copy>
217 tim 1.14 </target>
218    
219    
220 tim 1.11 <!-- Internal targets -->
221 tim 1.9
222 tim 1.11 <target name="set-warnings-if" if="build.warnings">
223     <property name="build.warnings.option" value="-warnunchecked"/>
224     </target>
225 tim 1.9
226 tim 1.16
227 tim 1.11 <target name="set-warnings-unless" unless="build.warnings">
228     <property name="build.warnings.option" value=""/>
229 tim 1.6 </target>
230    
231 tim 1.16
232 tim 1.11 <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 tim 1.9 </target>
237    
238    
239 tim 1.11 <target name="dist-jar" depends="clean, jar">
240     <copy file="${product.jar}" todir="${dist.dir}"/>
241     </target>
242    
243    
244 tim 1.16 <target name="dist-docs" depends="filter-src"
245 tim 1.11 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 tim 1.22 <packageset dir="${build.filter.src.dir}"/>
254 tim 1.11
255     </javadoc>
256     </target>
257    
258 tim 1.1
259 tim 1.16 <target name="compile-ant-filter" depends="init">
260 tim 1.1 <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 tim 1.11 <target name="filter-src" depends="compile-ant-filter">
269 tim 1.1 <mkdir dir="${build.filter.src.dir}"/>
270     <copy todir="${build.filter.src.dir}">
271     <fileset dir="${src.dir}">
272 tim 1.22 <include name="**/*.java"/>
273 tim 1.1 </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 tim 1.11 <bootclasspath refid="javac.bootclasspath"/>
320     <compilerarg line="${javac.args} ${build.warnings.option}"/>
321 tim 1.2 <classpath refid="test.classpath"/>
322 tim 1.1
323     </javac>
324     </target>
325 tim 1.11
326 tim 1.1
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 tim 1.12 dir="${build.reports.dir}"
334     fork="true">
335    
336 tim 1.21 <!--
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 tim 1.1
342     <formatter type="xml"/>
343    
344     <batchtest todir="${build.reports.dir}">
345     <fileset dir="${test.src.dir}">
346 tim 1.23 <include name="**/${testcase}Test.java"/>
347 tim 1.1 </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 tim 1.18 </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 tim 1.21 <fail message="Need JUnit 3.8 to run tests" unless="junit.available"/>
382 tim 1.1 </target>
383    
384    
385     </project>