/[cvs]/jsr166/build.xml
ViewVC logotype

Contents of /jsr166/build.xml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.20 - (show annotations)
Mon Jan 20 18:25:51 2003 UTC (16 years, 8 months ago) by tim
Branch: MAIN
Changes since 1.19: +0 -1 lines
File MIME type: text/xml
No need to create notes dir explicitly.

1 <project name="jsr166" default="usage">
2
3 <description>
4 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
9
10 <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
30
31 <!-- Compilation options -->
32 <property name="build.sourcelevel" value="1.5"/>
33 <property name="build.debug" value="true"/>
34 <property name="build.debuglevel" value="source,lines,vars"/>
35 <property name="build.deprecation" value="false"/>
36 <!--
37 <property name="build.warnings" value="true"/>
38 -->
39
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 <property name="build.javadocs.dir" location="${build.dir}/javadocs"/>
47 <property name="build.stripped.dir" location="${build.dir}/stripped"/>
48 <property name="build.reports.dir" location="${build.dir}/reports"/>
49 <property name="build.doccheck.dir" location="${build.dir}/doccheck"/>
50 <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 <property name="dist.dir" location="${basedir}/dist"/>
59
60 <!-- Distribution locations -->
61 <property name="dist.javadocs.dir" location="${dist.dir}/docs"/>
62
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 <property name="javac.args" value='-J-Xbootclasspath/p:${javac.jar}'/>
71
72 <path id="javac.bootclasspath">
73 <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
82 <!-- Main targets -->
83
84 <target name="compile" depends="init"
85 description="Compiles all sources to build folder">
86 <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 <bootclasspath refid="javac.bootclasspath"/>
96 <compilerarg line="${javac.args} ${build.warnings.option}"/>
97
98 <!-- need this because srcdir is basedir! -->
99 <include name="java/**/*.java"/>
100
101 </javac>
102 </target>
103
104
105 <target name="jar" depends="compile"
106 description="Builds library jar from compiled sources">
107 <mkdir dir="${build.lib.dir}"/>
108 <jar basedir="${build.classes.dir}"
109 destfile="${product.jar}"
110 />
111 </target>
112
113
114 <target name="test" depends="init, check-junit, report-tests"
115 description="Runs all tests (requires JUnit 1.8 in ${ant.home}/lib)"/>
116
117
118 <target name="checkstyle" depends="filter-src"
119 description="Reports on style errors in Java source (verbose, mostly chaff)">
120 <taskdef resource="checkstyletask.properties"
121 classpath="${lib.dir}/checkstyle-all-2.4.jar"/>
122
123 <checkstyle>
124 <formatter type="plain"/> <!-- also available: type="xml" -->
125 <fileset dir="${build.filter.src.dir}" includes="**/*.java"/>
126 </checkstyle>
127 </target>
128
129
130 <target name="doccheck" depends="filter-src"
131 description="Reports on javadoc style errors (not working yet)">
132 <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 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 link="http://java.sun.com/j2se/1.4.1/docs/api"
150 overview="${src.dir}/intro.html"
151 source="${build.sourcelevel}">
152
153 <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 <packageset dir="${build.filter.src.dir}">
158 <include name="java/**"/>
159 </packageset>
160
161 </javadoc>
162 </target>
163
164
165 <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
188
189 <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 </target>
195
196
197 <target name="dist-clean"
198 description="Removes all build and distribution products">
199 <delete dir="${dist.dir}"/>
200 </target>
201
202
203 <!-- Anthill targets -->
204
205 <!-- Should really run the tests instead of just the jar target -->
206 <target name="anthill-build" depends="jar, docs, dist-docs"/>
207
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 <copy tofile="${deployDir}/index.html"
216 file="${basedir}/etc/anthill-index.html"/>
217 <copy todir="${deployDir}/notes">
218 <fileset dir="${basedir}/etc/notes"/>
219 </copy>
220 </target>
221
222
223 <!-- Internal targets -->
224
225 <target name="set-warnings-if" if="build.warnings">
226 <property name="build.warnings.option" value="-warnunchecked"/>
227 </target>
228
229
230 <target name="set-warnings-unless" unless="build.warnings">
231 <property name="build.warnings.option" value=""/>
232 </target>
233
234
235 <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 </target>
240
241
242 <target name="dist-jar" depends="clean, jar">
243 <copy file="${product.jar}" todir="${dist.dir}"/>
244 </target>
245
246
247 <target name="dist-docs" depends="filter-src"
248 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
264 <target name="compile-ant-filter" depends="init">
265 <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 <target name="filter-src" depends="compile-ant-filter">
274 <mkdir dir="${build.filter.src.dir}"/>
275 <copy todir="${build.filter.src.dir}">
276 <fileset dir="${src.dir}">
277 <include name="java/**/*.java"/>
278 </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 <bootclasspath refid="javac.bootclasspath"/>
325 <compilerarg line="${javac.args} ${build.warnings.option}"/>
326 <classpath refid="test.classpath"/>
327 <include name="**/*Test.java"/>
328
329 </javac>
330 </target>
331
332
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 dir="${build.reports.dir}"
340 fork="true">
341
342 <jvmarg value="-Xbootclasspath/p:${product.jar}"/>
343
344 <classpath>
345 <!-- <path refid="test.classpath"/> -->
346 <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 </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 </target>
390
391
392 </project>

dl@cs.oswego.edu
ViewVC Help
Powered by ViewVC 1.1.27