ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.20
Committed: Mon Jan 20 18:25:51 2003 UTC (21 years, 3 months ago) by tim
Content type: text/xml
Branch: MAIN
Changes since 1.19: +0 -1 lines
Log Message:
No need to create notes dir explicitly.

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 <copy todir="${deployDir}/notes">
218     <fileset dir="${basedir}/etc/notes"/>
219     </copy>
220 tim 1.14 </target>
221    
222    
223 tim 1.11 <!-- Internal targets -->
224 tim 1.9
225 tim 1.11 <target name="set-warnings-if" if="build.warnings">
226     <property name="build.warnings.option" value="-warnunchecked"/>
227     </target>
228 tim 1.9
229 tim 1.16
230 tim 1.11 <target name="set-warnings-unless" unless="build.warnings">
231     <property name="build.warnings.option" value=""/>
232 tim 1.6 </target>
233    
234 tim 1.16
235 tim 1.11 <target name="init" depends="set-warnings-if, set-warnings-unless">
236     <!-- Version is kept in a separate file -->
237     <loadfile property="version" srcFile="version.properties"/>
238     <echo>Building JSR-166 version ${version}</echo>
239 tim 1.9 </target>
240    
241    
242 tim 1.11 <target name="dist-jar" depends="clean, jar">
243     <copy file="${product.jar}" todir="${dist.dir}"/>
244     </target>
245    
246    
247 tim 1.16 <target name="dist-docs" depends="filter-src"
248 tim 1.11 description="Builds javadocs without custom tags to dist folder">
249     <delete dir="${dist.javadocs.dir}"/>
250     <mkdir dir="${dist.javadocs.dir}"/>
251     <javadoc destdir="${dist.javadocs.dir}"
252     link="http://java.sun.com/j2se/1.4.1/docs/api"
253     overview="${src.dir}/intro.html"
254     source="${build.sourcelevel}">
255    
256     <packageset dir="${build.filter.src.dir}">
257     <include name="java/**"/>
258     </packageset>
259    
260     </javadoc>
261     </target>
262    
263 tim 1.1
264 tim 1.16 <target name="compile-ant-filter" depends="init">
265 tim 1.1 <mkdir dir="${build.ant.dir}"/>
266     <javac srcdir="${ant.src.dir}"
267     destdir="${build.ant.dir}"
268     source="1.4"
269     />
270     </target>
271    
272    
273 tim 1.11 <target name="filter-src" depends="compile-ant-filter">
274 tim 1.1 <mkdir dir="${build.filter.src.dir}"/>
275     <copy todir="${build.filter.src.dir}">
276     <fileset dir="${src.dir}">
277 tim 1.15 <include name="java/**/*.java"/>
278 tim 1.1 </fileset>
279     <filterchain>
280     <filterreader classname="jsr166.ant.filters.ReplaceFilter"
281     classpath="${build.ant.dir}">
282     <!--
283     # These arguments are to get rid of angle-bracketed type
284     # parameters so that javadoc can run on the result. The
285     # following heuristic that seems to work:
286     #
287     # For all lines not starting with space(s)-asterisk-space(s),
288     # replace <something> with a space, where there may be more
289     # than one right angle bracket at the end, and "something"
290     # must not contain parens or pipes. (This may need some
291     # tweaking.)
292     -->
293     <param name="notmatching" value="^\s+\*\s.*$"/>
294     <param name="pattern" value="&lt;[^|>()]+?>+"/>
295     <param name="replacement" value=" "/>
296     </filterreader>
297     <filterreader classname="jsr166.ant.filters.ReplaceFilter"
298     classpath="${build.ant.dir}">
299     <!--
300     # These arguments are to uncomment lines beginning with
301     # "//@" so that javadoc can see imports that are needed
302     # to resolve links but that shouldn't be in the compiled
303     # code.
304     -->
305     <param name="matching" value="^//@.*$"/>
306     <param name="pattern" value="^//@"/>
307     <param name="replacement" value=""/>
308     </filterreader>
309     </filterchain>
310     </copy>
311     </target>
312    
313    
314     <target name="compile-tests" depends="jar">
315     <mkdir dir="${build.testcases.dir}"/>
316     <javac srcdir="${test.src.dir}"
317     destdir="${build.testcases.dir}"
318     debug="${build.debug}"
319     debuglevel="${build.debuglevel}"
320     deprecation="${build.deprecation}"
321     source="${build.sourcelevel}"
322     fork="true">
323    
324 tim 1.11 <bootclasspath refid="javac.bootclasspath"/>
325     <compilerarg line="${javac.args} ${build.warnings.option}"/>
326 tim 1.2 <classpath refid="test.classpath"/>
327 tim 1.1 <include name="**/*Test.java"/>
328    
329     </javac>
330     </target>
331 tim 1.11
332 tim 1.1
333     <target name="run-tests" depends="compile-tests">
334     <mkdir dir="${build.reports.dir}"/>
335     <junit printsummary="true"
336     showoutput="true"
337     errorProperty="junit.failed"
338     failureProperty="junit.failed"
339 tim 1.12 dir="${build.reports.dir}"
340     fork="true">
341    
342     <jvmarg value="-Xbootclasspath/p:${product.jar}"/>
343 tim 1.1
344     <classpath>
345 tim 1.12 <!-- <path refid="test.classpath"/> -->
346 tim 1.1 <pathelement location="${build.testcases.dir}"/>
347     </classpath>
348    
349     <formatter type="xml"/>
350    
351     <batchtest todir="${build.reports.dir}">
352     <fileset dir="${test.src.dir}">
353     <include name="**/*Test.java"/>
354     </fileset>
355     </batchtest>
356    
357     </junit>
358     </target>
359    
360    
361     <target name="report-tests" depends="run-tests">
362     <!-- Sets junit.report.format to frames if Xalan is present,
363     otherwise sets it to noframes. -->
364     <available property="junit.report.format"
365     value="frames"
366     classname="org.apache.xalan.lib.Redirect"
367     />
368     <property name="junit.report.format" value="noframes"/>
369    
370     <junitreport todir="${build.reports.dir}">
371     <fileset dir="${build.reports.dir}">
372     <include name="TEST-*.xml"/>
373     </fileset>
374     <report styledir="${stylesheet.dir}"
375     format="${junit.report.format}"
376     todir="${build.reports.dir}"
377     />
378     </junitreport>
379    
380     <fail message="Test Cases Failed" if="junit.failed"/>
381 tim 1.18 </target>
382    
383    
384     <target name="check-junit">
385     <!-- FIXME: this test isn't specific enough -->
386     <available property="junit.available"
387     classname="junit.framework.TestCase"/>
388     <fail message="Need JUnit 1.8 to run tests" unless="junit.available"/>
389 tim 1.1 </target>
390    
391    
392     </project>