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

# 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 dholmes 1.24 <property name="build.docsourcelevel" value="1.4"/>
36 tim 1.1 <property name="build.debug" value="true"/>
37     <property name="build.debuglevel" value="source,lines,vars"/>
38 tim 1.13 <property name="build.deprecation" value="false"/>
39     <!--
40 tim 1.11 <property name="build.warnings" value="true"/>
41 tim 1.13 -->
42 tim 1.1
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 tim 1.9 <property name="build.javadocs.dir" location="${build.dir}/javadocs"/>
50 tim 1.16 <property name="build.stripped.dir" location="${build.dir}/stripped"/>
51 tim 1.1 <property name="build.reports.dir" location="${build.dir}/reports"/>
52 tim 1.16 <property name="build.doccheck.dir" location="${build.dir}/doccheck"/>
53 tim 1.1 <property name="build.filter.src.dir" location="${build.dir}/filtersrc"/>
54    
55     <!-- Source locations -->
56 tim 1.22 <property name="src.dir" location="${basedir}/src/main"/>
57     <property name="test.src.dir" location="${basedir}/src/test"/>
58 tim 1.1 <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 tim 1.9 <property name="dist.dir" location="${basedir}/dist"/>
62    
63     <!-- Distribution locations -->
64     <property name="dist.javadocs.dir" location="${dist.dir}/docs"/>
65 tim 1.1
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 tim 1.11 <property name="javac.args" value='-J-Xbootclasspath/p:${javac.jar}'/>
74 tim 1.1
75 tim 1.11 <path id="javac.bootclasspath">
76 tim 1.2 <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 tim 1.1
85 tim 1.11 <!-- Main targets -->
86    
87     <target name="compile" depends="init"
88     description="Compiles all sources to build folder">
89 tim 1.1 <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 tim 1.11 <bootclasspath refid="javac.bootclasspath"/>
99     <compilerarg line="${javac.args} ${build.warnings.option}"/>
100 tim 1.1
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 tim 1.22 <packageset dir="${build.filter.src.dir}"/>
138 tim 1.16 </javadoc>
139     </target>
140    
141    
142     <target name="docs" depends="filter-src"
143 tim 1.9 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 tim 1.8 link="http://java.sun.com/j2se/1.4.1/docs/api"
148     overview="${src.dir}/intro.html"
149 dholmes 1.24 source="${build.docsourcelevel}">
150 tim 1.8
151 tim 1.9 <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 tim 1.22 <packageset dir="${build.filter.src.dir}"/>
156 tim 1.8
157     </javadoc>
158     </target>
159    
160    
161 tim 1.22 <!--
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 tim 1.16 <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 tim 1.1
186    
187 tim 1.11 <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 tim 1.1 </target>
193    
194    
195 tim 1.11 <target name="dist-clean"
196     description="Removes all build and distribution products">
197     <delete dir="${dist.dir}"/>
198 tim 1.9 </target>
199 tim 1.10
200    
201 tim 1.14 <!-- Anthill targets -->
202    
203     <!-- Should really run the tests instead of just the jar target -->
204 tim 1.18 <target name="anthill-build" depends="jar, docs, dist-docs"/>
205 tim 1.14
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 tim 1.17 <copy tofile="${deployDir}/index.html"
214     file="${basedir}/etc/anthill-index.html"/>
215 tim 1.19 <copy todir="${deployDir}/notes">
216     <fileset dir="${basedir}/etc/notes"/>
217     </copy>
218 tim 1.14 </target>
219    
220    
221 tim 1.11 <!-- Internal targets -->
222 tim 1.9
223 tim 1.11 <target name="set-warnings-if" if="build.warnings">
224     <property name="build.warnings.option" value="-warnunchecked"/>
225     </target>
226 tim 1.9
227 tim 1.16
228 tim 1.11 <target name="set-warnings-unless" unless="build.warnings">
229     <property name="build.warnings.option" value=""/>
230 tim 1.6 </target>
231    
232 tim 1.16
233 tim 1.11 <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 tim 1.9 </target>
238    
239    
240 tim 1.11 <target name="dist-jar" depends="clean, jar">
241     <copy file="${product.jar}" todir="${dist.dir}"/>
242     </target>
243    
244    
245 tim 1.16 <target name="dist-docs" depends="filter-src"
246 tim 1.11 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 tim 1.22 <packageset dir="${build.filter.src.dir}"/>
255 tim 1.11
256     </javadoc>
257     </target>
258    
259 tim 1.1
260 tim 1.16 <target name="compile-ant-filter" depends="init">
261 tim 1.1 <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 tim 1.11 <target name="filter-src" depends="compile-ant-filter">
270 tim 1.1 <mkdir dir="${build.filter.src.dir}"/>
271     <copy todir="${build.filter.src.dir}">
272     <fileset dir="${src.dir}">
273 tim 1.22 <include name="**/*.java"/>
274 tim 1.1 </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 tim 1.11 <bootclasspath refid="javac.bootclasspath"/>
321     <compilerarg line="${javac.args} ${build.warnings.option}"/>
322 tim 1.2 <classpath refid="test.classpath"/>
323 tim 1.1
324     </javac>
325     </target>
326 tim 1.11
327 tim 1.1
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 tim 1.12 dir="${build.reports.dir}"
335     fork="true">
336    
337 tim 1.21 <!--
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 tim 1.1
343     <formatter type="xml"/>
344    
345     <batchtest todir="${build.reports.dir}">
346     <fileset dir="${test.src.dir}">
347 tim 1.23 <include name="**/${testcase}Test.java"/>
348 tim 1.1 </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 tim 1.18 </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 tim 1.21 <fail message="Need JUnit 3.8 to run tests" unless="junit.available"/>
383 tim 1.1 </target>
384    
385    
386     </project>