ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.18
Committed: Mon Dec 16 15:32:55 2002 UTC (21 years, 4 months ago) by tim
Content type: text/xml
Branch: MAIN
Changes since 1.17: +37 -13 lines
Log Message:
Add usage target

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