ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.19
Committed: Mon Jan 20 18:25:07 2003 UTC (21 years, 3 months ago) by tim
Content type: text/xml
Branch: MAIN
Changes since 1.18: +4 -0 lines
Log Message:
Added some long winded notes on executor use.

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