ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/build.xml
Revision: 1.37
Committed: Fri May 30 03:24:18 2003 UTC (20 years, 11 months ago) by tim
Content type: text/xml
Branch: MAIN
Changes since 1.36: +51 -39 lines
Log Message:
Added test of new JSR-201 syntax features.

File Contents

# User Rev Content
1 tim 1.18 <project name="jsr166" default="usage">
2 tim 1.1
3     <description>
4 tim 1.29 ------------------------------------------------------------------------------
5     Build file for JSR-166
6 tim 1.18
7 tim 1.29 Usage: ant [target]
8    
9     User-specific settings are read from user.properties.
10 tim 1.32 See user.properties.sample for an explanation of some useful settings.
11 tim 1.29 ------------------------------------------------------------------------------
12 tim 1.18 </description>
13 tim 1.11
14 tim 1.29 <target name="usage" description="Advises user to run with -projecthelp">
15     <echo>Run "ant -projecthelp" for full usage information.</echo>
16     </target>
17 tim 1.3
18 tim 1.11
19 tim 1.27 <!-- User-specific settings -->
20 tim 1.23 <property file="user.properties"/>
21 tim 1.27
22 tim 1.1
23     <!-- Compilation options -->
24 tim 1.11 <property name="build.sourcelevel" value="1.5"/>
25 tim 1.25 <property name="build.docsourcelevel" value="1.4"/>
26 tim 1.1 <property name="build.debug" value="true"/>
27     <property name="build.debuglevel" value="source,lines,vars"/>
28 tim 1.13 <property name="build.deprecation" value="false"/>
29 tim 1.1
30     <!-- Build locations -->
31     <property name="build.dir" location="build"/>
32     <property name="build.classes.dir" location="${build.dir}/classes"/>
33 tim 1.27 <property name="build.emulation.dir" location="${build.dir}/emulation"/>
34 tim 1.1 <property name="build.testcases.dir" location="${build.dir}/testcases"/>
35     <property name="build.lib.dir" location="${build.dir}/lib"/>
36     <property name="build.ant.dir" location="${build.dir}/ant"/>
37 tim 1.9 <property name="build.javadocs.dir" location="${build.dir}/javadocs"/>
38 tim 1.16 <property name="build.stripped.dir" location="${build.dir}/stripped"/>
39 tim 1.1 <property name="build.reports.dir" location="${build.dir}/reports"/>
40 tim 1.16 <property name="build.doccheck.dir" location="${build.dir}/doccheck"/>
41 tim 1.1 <property name="build.filter.src.dir" location="${build.dir}/filtersrc"/>
42    
43     <!-- Source locations -->
44 tim 1.22 <property name="src.dir" location="${basedir}/src/main"/>
45 tim 1.27 <property name="emulation.src.dir" location="${basedir}/src/emulation"/>
46 tim 1.22 <property name="test.src.dir" location="${basedir}/src/test"/>
47 tim 1.1 <property name="ant.src.dir" location="${basedir}/etc/ant"/>
48     <property name="stylesheet.dir" location="${basedir}/etc/xsl"/>
49     <property name="lib.dir" location="${basedir}/lib"/>
50 tim 1.9 <property name="dist.dir" location="${basedir}/dist"/>
51    
52     <!-- Distribution locations -->
53     <property name="dist.javadocs.dir" location="${dist.dir}/docs"/>
54 tim 1.1
55     <!-- Jar locations -->
56     <property name="product.jar" location="${build.lib.dir}/jsr166.jar"/>
57     <property name="junit.jar" location="${lib.dir}/junit.jar"/>
58     <property name="rt.jar" location="${java.home}/lib/rt.jar"/>
59    
60 tim 1.27
61 tim 1.28
62     <!-- Files excluded from emulation and dist-docs -->
63     <patternset id="emulation.excludes">
64     <exclude name="java/util/Random.*"/>
65     <exclude name="sun/misc/Unsafe.*"/>
66     </patternset>
67    
68    
69    
70 tim 1.11 <!-- Main targets -->
71    
72 tim 1.28 <target name="compile"
73 tim 1.33 depends="init, configure-compiler, prepare-src"
74 tim 1.27 description="Compiles main sources to build folder">
75    
76 tim 1.33 <property name="prepare.src.dir" value="${src.dir}"/>
77    
78 tim 1.1 <mkdir dir="${build.classes.dir}"/>
79 tim 1.27
80 tim 1.37 <!--
81     <echo>javac ${gjc.args}</echo>
82     <echo>bootclasspath=${compile.bootclasspath}</echo>
83     -->
84    
85 tim 1.33 <javac srcdir="${prepare.src.dir}"
86 tim 1.1 destdir="${build.classes.dir}"
87     debug="${build.debug}"
88     debuglevel="${build.debuglevel}"
89     deprecation="${build.deprecation}"
90     source="${build.sourcelevel}"
91     fork="true">
92    
93 tim 1.37 <compilerarg line="${gjc.args}"/>
94     <bootclasspath refid="compile.bootclasspath"/>
95 tim 1.1
96     </javac>
97 tim 1.27
98 tim 1.1 </target>
99    
100    
101 tim 1.28 <target name="jar"
102 tim 1.32 depends="configure-emulation, init-jar, native-jar, emulation-jar"
103 tim 1.28 description="Builds library jar from compiled sources"/>
104 tim 1.1
105    
106 tim 1.28 <target name="test"
107 tim 1.32 depends="init, configure-tests, report-tests"
108 tim 1.29 description="Runs all tests (requires JUnit 3.8.1 in ${ant.home}/lib)" />
109 tim 1.1
110    
111 tim 1.28 <target name="checkstyle"
112     depends="filter-src"
113 tim 1.18 description="Reports on style errors in Java source (verbose, mostly chaff)">
114 tim 1.27
115 tim 1.15 <taskdef resource="checkstyletask.properties"
116     classpath="${lib.dir}/checkstyle-all-2.4.jar"/>
117    
118     <checkstyle>
119 tim 1.16 <formatter type="plain"/> <!-- also available: type="xml" -->
120 tim 1.15 <fileset dir="${build.filter.src.dir}" includes="**/*.java"/>
121     </checkstyle>
122 tim 1.27
123 tim 1.15 </target>
124    
125 tim 1.16
126 tim 1.28 <target name="doccheck"
127     depends="filter-src"
128 tim 1.18 description="Reports on javadoc style errors (not working yet)">
129 tim 1.27
130 tim 1.16 <delete dir="${build.doccheck.dir}"/>
131     <mkdir dir="${build.doccheck.dir}"/>
132 tim 1.27
133 tim 1.16 <javadoc doclet="com.sun.tools.doclets.doccheck.DocCheck"
134     docletpath="${lib.dir}/doccheck.jar"
135     destdir="${build.doccheck.dir}">
136 tim 1.22 <packageset dir="${build.filter.src.dir}"/>
137 tim 1.16 </javadoc>
138 tim 1.27
139 tim 1.16 </target>
140    
141    
142 tim 1.28 <target name="docs"
143     depends="filter-src"
144 tim 1.9 description="Builds javadocs with custom tags to build folder">
145 tim 1.27
146 tim 1.9 <delete dir="${build.javadocs.dir}"/>
147     <mkdir dir="${build.javadocs.dir}"/>
148 tim 1.27
149 tim 1.9 <javadoc destdir="${build.javadocs.dir}"
150 tim 1.8 link="http://java.sun.com/j2se/1.4.1/docs/api"
151     overview="${src.dir}/intro.html"
152 dholmes 1.24 source="${build.docsourcelevel}">
153 tim 1.8
154 tim 1.9 <tag name="revised" description="Last revised:"/>
155 tim 1.29 <tag name="spec" description="Specified by:"/>
156     <tag name="editor" description="Last edited by:"/>
157     <tag name="fixme" description="FIX ME:"/>
158    
159 tim 1.22 <packageset dir="${build.filter.src.dir}"/>
160 tim 1.8
161     </javadoc>
162 tim 1.27
163 tim 1.8 </target>
164    
165    
166 tim 1.28 <target name="strip"
167 tim 1.32 depends="init, configure-compiler"
168 tim 1.31 description="Strip generics from java source (not working yet)">
169 tim 1.27
170 tim 1.16 <mkdir dir="${build.stripped.dir}"/>
171 tim 1.27
172 tim 1.31 <!--
173     # javac -s doesn't reliably generate compilable code. It generates
174     # bridge methods (marked as "synthetic") that can have identical
175     # signatures to existing methods except for the return value.
176     -->
177 tim 1.16 <javac srcdir="${src.dir}"
178     destdir="${build.stripped.dir}"
179     debug="${build.debug}"
180     debuglevel="${build.debuglevel}"
181     deprecation="${build.deprecation}"
182     source="${build.sourcelevel}"
183     fork="true">
184    
185 tim 1.37 <compilerarg line="${gjc.args} -s"/>
186     <bootclasspath refid="compile.bootclasspath"/>
187 tim 1.16
188     </javac>
189 tim 1.27
190 tim 1.16 </target>
191    
192    
193 tim 1.28 <target name="dist"
194     depends="init, dist-clean, dist-jar, dist-docs"
195 tim 1.16 description="Puts all distributable products in single hierarchy"/>
196 tim 1.1
197    
198 tim 1.11 <target name="clean"
199     description="Removes all build products">
200 tim 1.27
201 tim 1.11 <delete dir="${build.dir}"/>
202     <delete dir="${build.classes.dir}"/>
203     <delete dir="${build.lib.dir}"/>
204 tim 1.27
205 tim 1.1 </target>
206    
207    
208 tim 1.11 <target name="dist-clean"
209     description="Removes all build and distribution products">
210 tim 1.27
211 tim 1.11 <delete dir="${dist.dir}"/>
212 tim 1.27
213 tim 1.9 </target>
214 tim 1.10
215    
216 tim 1.28 <target name="dist-docs"
217     depends="filter-src"
218     description="Builds javadocs without custom tags to dist folder">
219    
220     <delete dir="${dist.javadocs.dir}"/>
221     <mkdir dir="${dist.javadocs.dir}"/>
222    
223     <javadoc destdir="${dist.javadocs.dir}"
224     link="http://java.sun.com/j2se/1.4.1/docs/api"
225     overview="${src.dir}/intro.html"
226     source="${build.docsourcelevel}">
227    
228     <packageset dir="${build.filter.src.dir}"/>
229 tim 1.14
230 tim 1.28 </javadoc>
231 tim 1.14
232     </target>
233    
234    
235 tim 1.28
236 tim 1.11 <!-- Internal targets -->
237 tim 1.9
238 tim 1.16
239 tim 1.32 <target name="init">
240 tim 1.27
241 tim 1.11 <!-- Version is kept in a separate file -->
242     <loadfile property="version" srcFile="version.properties"/>
243     <echo>Building JSR-166 version ${version}</echo>
244 tim 1.27
245     </target>
246    
247    
248 tim 1.28 <target name="init-jar">
249 tim 1.27
250     <mkdir dir="${build.lib.dir}"/>
251    
252 tim 1.28 </target>
253    
254    
255     <target name="native-jar"
256 tim 1.30 depends="compile"
257     unless="build.emulation.true">
258 tim 1.28
259 tim 1.27 <jar destfile="${product.jar}">
260     <fileset dir="${build.classes.dir}"/>
261     </jar>
262    
263     </target>
264    
265    
266 tim 1.28 <target name="compile-emulation"
267 tim 1.32 depends="init, configure-compiler"
268 tim 1.30 if="build.emulation.true">
269 tim 1.27
270     <mkdir dir="${build.emulation.dir}"/>
271    
272     <javac srcdir="${emulation.src.dir}"
273     destdir="${build.emulation.dir}"
274     debug="${build.debug}"
275     debuglevel="${build.debuglevel}"
276     deprecation="${build.deprecation}"
277     source="${build.sourcelevel}"
278     fork="true">
279    
280 tim 1.37 <compilerarg line="${gjc.args}"/>
281     <bootclasspath refid="compile.bootclasspath"/>
282 tim 1.27
283     </javac>
284    
285     </target>
286    
287    
288 tim 1.28 <target name="emulation-jar"
289 tim 1.30 depends="compile-emulation"
290     if="build.emulation.true">
291 tim 1.27
292 tim 1.29
293     <jar destfile="${product.jar}" duplicate="add">
294     <fileset dir="${build.classes.dir}">
295     <patternset refid="emulation.excludes"/>
296     </fileset>
297 tim 1.27 <fileset dir="${build.emulation.dir}"/>
298     </jar>
299    
300 tim 1.9 </target>
301    
302    
303 tim 1.28 <target name="dist-jar"
304     depends="clean, jar">
305 tim 1.27
306 tim 1.11 <copy file="${product.jar}" todir="${dist.dir}"/>
307 tim 1.27
308 tim 1.11 </target>
309    
310    
311 tim 1.28 <target name="compile-ant-filter"
312     depends="init">
313 tim 1.27
314 tim 1.1 <mkdir dir="${build.ant.dir}"/>
315 tim 1.27
316 tim 1.1 <javac srcdir="${ant.src.dir}"
317     destdir="${build.ant.dir}"
318     source="1.4"
319     />
320 tim 1.27
321 tim 1.1 </target>
322    
323    
324 tim 1.28 <target name="filter-src"
325     depends="compile-ant-filter">
326 tim 1.27
327 tim 1.1 <mkdir dir="${build.filter.src.dir}"/>
328 tim 1.27
329 tim 1.1 <copy todir="${build.filter.src.dir}">
330     <fileset dir="${src.dir}">
331 tim 1.31 <include name="**/*.html"/>
332     </fileset>
333     </copy>
334    
335 tim 1.36 <!-- Not needed now, used for doccheck filtering:
336     <property name="generic.declarations"
337     value="public interface E {} public interface T {} public interface K {} public interface V {}"
338     />
339     -->
340    
341 tim 1.31 <copy todir="${build.filter.src.dir}">
342     <fileset dir="${src.dir}">
343     <exclude name="**/*.html"/>
344 tim 1.28 <patternset refid="emulation.excludes"/>
345 tim 1.1 </fileset>
346     <filterchain>
347 tim 1.36
348     <!--
349     # This filter gets rid of angle-bracketed type parameters
350     # so that javadoc can run on the result. The following
351     # heuristic seems to work:
352     #
353     # For all lines not starting with space(s)-asterisk-space(s),
354     # replace <something> with a space, where there may be more
355     # than one right angle bracket at the end, and "something"
356     # must not contain parens or pipes. (This may need some
357     # tweaking.)
358     -->
359    
360 tim 1.1 <filterreader classname="jsr166.ant.filters.ReplaceFilter"
361     classpath="${build.ant.dir}">
362     <param name="notmatching" value="^\s+\*\s.*$"/>
363 tim 1.36 <param name="pattern" value="&lt;[^|>()]+?>+"/>
364 tim 1.1 <param name="replacement" value=" "/>
365     </filterreader>
366 tim 1.36
367    
368     <!--
369     # This filter uncomments lines beginning with "//@" so that
370     # javadoc can see imports that are needed to resolve links
371     # but that shouldn't be in the compiled code.
372     -->
373    
374 tim 1.1 <filterreader classname="jsr166.ant.filters.ReplaceFilter"
375     classpath="${build.ant.dir}">
376 tim 1.36 <param name="matching" value="^//@.*$"/>
377     <param name="pattern" value="^//@"/>
378 tim 1.1 <param name="replacement" value=""/>
379     </filterreader>
380 tim 1.36
381    
382     <!--
383     # The next two filters try to make the source look like
384     # something that doccheck can process. The first removes
385     # -source 1.4 assertions and the second adds in a bunch
386     # of single letter public nested marker interfaces so that
387     # the generic type parameters are recognized.
388     #
389     # Currently commented out because doccheck doesn't work. :-(
390     -->
391    
392     <!--
393     <filterreader classname="jsr166.ant.filters.ReplaceFilter"
394     classpath="${build.ant.dir}">
395     <param name="matching" value="^\s*assert[\s ].*$"/>
396     <param name="pattern" value="assert"/>
397     <param name="replacement" value="//assert"/>
398     </filterreader>
399    
400     <filterreader classname="jsr166.ant.filters.ReplaceFilter"
401     classpath="${build.ant.dir}">
402     <param name="matching" value="^(.*(class|interface|implements) .*|)\{.*$"/>
403     <param name="pattern" value="$"/>
404     <param name="replacement" value=" ${generic.declarations}"/>
405     </filterreader>
406     -->
407    
408 tim 1.1 </filterchain>
409     </copy>
410 tim 1.27
411 tim 1.1 </target>
412    
413    
414 tim 1.28 <target name="compile-tests"
415     depends="jar">
416 tim 1.27
417 tim 1.1 <mkdir dir="${build.testcases.dir}"/>
418 tim 1.27
419 tim 1.37 <!--
420     <echo>javac ${gjc.args}</echo>
421     <echo>bootclasspath=${test.compile.bootclasspath}</echo>
422     <echo>classpath="${test.classpath}"</echo>
423     -->
424    
425 tim 1.1 <javac srcdir="${test.src.dir}"
426     destdir="${build.testcases.dir}"
427     debug="${build.debug}"
428     debuglevel="${build.debuglevel}"
429     deprecation="${build.deprecation}"
430     source="${build.sourcelevel}"
431     fork="true">
432    
433 tim 1.37 <compilerarg line="${gjc.args}"/>
434     <bootclasspath refid="test.compile.bootclasspath"/>
435     <classpath refid="test.classpath"/>
436 tim 1.1
437     </javac>
438 tim 1.27
439 tim 1.1 </target>
440 tim 1.11
441 tim 1.1
442 tim 1.28 <target name="run-tests"
443     depends="compile-tests">
444 tim 1.27
445     <!-- May be overridden by user.properties -->
446     <property name="testcase" value="*"/>
447    
448 tim 1.1 <mkdir dir="${build.reports.dir}"/>
449 tim 1.27
450 tim 1.1 <junit printsummary="true"
451     showoutput="true"
452     errorProperty="junit.failed"
453     failureProperty="junit.failed"
454 tim 1.12 dir="${build.reports.dir}"
455     fork="true">
456    
457 tim 1.37 <jvmarg value="-Xbootclasspath/p:${test.run.bootclasspath}"/>
458 tim 1.1
459     <formatter type="xml"/>
460    
461     <batchtest todir="${build.reports.dir}">
462     <fileset dir="${test.src.dir}">
463 tim 1.23 <include name="**/${testcase}Test.java"/>
464 tim 1.1 </fileset>
465     </batchtest>
466    
467     </junit>
468 tim 1.27
469 tim 1.1 </target>
470    
471    
472 tim 1.28 <target name="report-tests"
473     depends="run-tests">
474    
475 tim 1.1 <!-- Sets junit.report.format to frames if Xalan is present,
476     otherwise sets it to noframes. -->
477     <available property="junit.report.format"
478     value="frames"
479     classname="org.apache.xalan.lib.Redirect"
480     />
481     <property name="junit.report.format" value="noframes"/>
482    
483     <junitreport todir="${build.reports.dir}">
484     <fileset dir="${build.reports.dir}">
485     <include name="TEST-*.xml"/>
486     </fileset>
487     <report styledir="${stylesheet.dir}"
488     format="${junit.report.format}"
489     todir="${build.reports.dir}"
490     />
491     </junitreport>
492    
493     <fail message="Test Cases Failed" if="junit.failed"/>
494 tim 1.28
495 tim 1.18 </target>
496    
497    
498 tim 1.32 <target name="configure-compiler">
499    
500     <property name="gjc.version"
501 tim 1.34 value="2.0"/>
502 tim 1.32
503 tim 1.37 <condition property="novariance.arg" value="-novariance">
504 tim 1.32 <and>
505     <equals arg1="${gjc.version}" arg2="2.0"/>
506     <or>
507     <not><isset property="gjc.novariance"/></not>
508     <istrue value="${gjc.novariance}"/>
509     </or>
510     </and>
511     </condition>
512    
513 tim 1.37 <property name="novariance.arg"
514 tim 1.32 value=""/>
515    
516     <property name="gjc.dir"
517     value="${lib.dir}/gjc"/>
518    
519     <property name="javac.jar"
520     location="${gjc.dir}/${gjc.version}/javac.jar"/>
521    
522     <property name="collect.jar"
523 tim 1.37 location="${gjc.dir}/${gjc.version}/collect${novariance.arg}.jar"/>
524 tim 1.32
525    
526 tim 1.37 <condition property="warnunchecked.arg" value="-warnunchecked">
527 tim 1.32 <istrue value="${gjc.warnunchecked}"/>
528     </condition>
529    
530 tim 1.37 <property name="warnunchecked.arg" value=""/>
531 tim 1.32
532 tim 1.34 <condition property="prepare.src.dir" value="${build.dir}/prepare-src">
533 tim 1.35 <istrue value="${build.nothreads}"/>
534 tim 1.34 </condition>
535    
536 tim 1.32
537     <!--
538     ! Bootclasspath munging for source compilation.
539     -->
540    
541 tim 1.37 <path id="pre.bootclasspath">
542 tim 1.32 <!-- <pathelement location="${src.dir}"/> -->
543     <pathelement location="${javac.jar}"/>
544     </path>
545    
546 tim 1.37 <path id="compile.bootclasspath">
547 tim 1.32 <!-- <pathelement location="${src.dir}"/> -->
548     <pathelement location="${collect.jar}"/>
549     <pathelement location="${rt.jar}"/>
550     </path>
551    
552 tim 1.37 <!-- Flatten paths into platform-appropriate strings -->
553     <property name="pre.bootclasspath" refid="pre.bootclasspath"/>
554     <property name="compile.bootclasspath" refid="compile.bootclasspath"/>
555    
556 tim 1.32
557     <!-- Common options in javac invocations -->
558 tim 1.37 <property name="gjc.args"
559     value="-J-Xbootclasspath/p:${pre.bootclasspath} ${warnunchecked.arg} ${novariance.arg}"
560     />
561 tim 1.33
562     </target>
563    
564    
565     <target name="prepare-src"
566 tim 1.34 depends="configure-compiler"
567 tim 1.33 if="prepare.src.dir">
568    
569     <mkdir dir="${prepare.src.dir}"/>
570     <copy todir="${prepare.src.dir}">
571     <fileset dir="${src.dir}">
572     <exclude name="java/lang/**"/>
573     </fileset>
574     </copy>
575 tim 1.32
576     </target>
577    
578    
579     <target name="configure-emulation">
580    
581     <condition property="build.emulation.true">
582     <or>
583     <and>
584     <os family="windows"/>
585     <not>
586     <isset property="build.emulation"/>
587     </not>
588     </and>
589     <istrue value="${build.emulation}"/>
590     </or>
591     </condition>
592    
593     </target>
594    
595    
596 tim 1.37 <target name="configure-tests"
597     depends="configure-compiler">
598 tim 1.28
599     <!-- junit.framework.Protectable is in JUnit 3.8.1 but not in 3.7 -->
600 tim 1.18 <available property="junit.available"
601 tim 1.28 classname="junit.framework.Protectable"/>
602    
603     <fail message="Need JUnit 3.8.1 in ${ant.home}${file.separator}lib to run tests"
604     unless="junit.available"/>
605    
606 tim 1.30
607 tim 1.32 <!--
608     ! Bootclasspath munging for testing, so JUnit can test our local
609     ! modifications to java.*.
610     -->
611    
612     <path id="test.classpath">
613     <pathelement location="${product.jar}"/>
614     <pathelement location="${build.testcases.dir}"/>
615     <pathelement location="${junit.jar}"/>
616     </path>
617    
618 tim 1.37 <path id="test.compile.bootclasspath">
619     <pathelement location="${javac.jar}"/>
620     <pathelement location="${collect.jar}"/>
621     <pathelement location="${rt.jar}"/>
622     </path>
623    
624     <path id="test.run.bootclasspath">
625     <pathelement location="${javac.jar}"/>
626     <path refid="test.classpath"/>
627     </path>
628 tim 1.32
629 tim 1.37 <!-- Flatten test classpaths into platform-appropriate strings -->
630     <property name="test.classpath" refid="test.classpath"/>
631     <property name="test.compile.bootclasspath" refid="test.compile.bootclasspath"/>
632     <property name="test.run.bootclasspath" refid="test.run.bootclasspath"/>
633 tim 1.30
634 tim 1.28 </target>
635    
636    
637    
638     <!-- Anthill targets -->
639    
640     <target name="anthill-build"
641     depends="jar, test, docs, dist-docs"/>
642    
643     <target name="anthill-publish">
644    
645     <copy todir="${deployDir}/docs/private">
646     <fileset dir="${build.javadocs.dir}"/>
647     </copy>
648    
649     <copy todir="${deployDir}/docs/public">
650     <fileset dir="${dist.javadocs.dir}"/>
651     </copy>
652    
653     <copy tofile="${deployDir}/index.html"
654     file="${basedir}/etc/anthill-index.html"/>
655    
656     <copy todir="${deployDir}/notes">
657     <fileset dir="${basedir}/etc/notes"/>
658     </copy>
659    
660 tim 1.1 </target>
661    
662    
663     </project>