1<!--
2*******************************************************************************
3* Copyright (C) 1997-2015, International Business Machines Corporation and    *
4* others. All Rights Reserved.                                                *
5*******************************************************************************
6-->
7<project name="icu4j" default="jar" basedir="."
8    xmlns:jacoco="antlib:org.jacoco.ant">
9
10    <property file="build-local.properties"/>
11    <property file="build.properties"/>
12
13    <property name="shared.dir" value="main/shared"/>
14    <import file="${shared.dir}/build/common-targets.xml"/>
15
16    <property environment="env"/>
17
18    <!-- icu4j binaries -->
19    <property name="icu4j.jar.file" value="icu4j.jar"/>
20    <property name="icu4jtests.jar.file" value="icu4jtests.jar"/>
21    <property name="icu4j-charset.jar.file" value="icu4j-charset.jar"/>
22    <property name="icu4j-localespi.jar.file" value="icu4j-localespi.jar"/>
23
24    <property name="icu4jdemos.jar.file" value="icu4jdemos.jar"/>
25
26    <!-- icu4j API doc jar file -->
27    <property name="icu4jdocs.jar.file" value="icu4j-docs.jar"/>
28
29    <!-- icu4j src jar files -->
30    <property name="icu4j-src.jar.file" value="icu4j-src.jar"/>
31    <property name="icu4j-charset-src.jar.file" value="icu4j-charset-src.jar"/>
32    <property name="icu4j-localespi-src.jar.file" value="icu4j-localespi-src.jar"/>
33
34    <!-- icu4j source package archive files -->
35    <property name="icu4jsrc.zip.file" value="icu4j.zip"/>
36    <property name="icu4jsrc.tgz.file" value="icu4j.tgz"/>
37
38    <!-- icu4j versioned release files -->
39    <property name="icu4j.jar.versioned.file" value="icu4j-${release.file.ver}.jar"/>
40    <property name="icu4j-charset.jar.versioned.file" value="icu4j-charset-${release.file.ver}.jar"/>
41    <property name="icu4j-localespi.jar.versioned.file" value="icu4j-localespi-${release.file.ver}.jar"/>
42
43    <property name="icu4j-src.jar.versioned.file" value="icu4j-${release.file.ver}-src.jar"/>
44    <property name="icu4j-charset-src.jar.versioned.file" value="icu4j-charset-${release.file.ver}-src.jar"/>
45    <property name="icu4j-localespi-src.jar.versioned.file" value="icu4j-localespi-${release.file.ver}-src.jar"/>
46
47    <property name="icu4jdocs.jar.versioned.file" value="icu4j-${release.file.ver}-docs.jar"/>
48
49    <!-- <property name="icu4jsrc.zip.versioned.file" value="icu4j-${release.file.ver}.zip"/> -->
50    <property name="icu4jsrc.tgz.versioned.file" value="icu4j-${release.file.ver}.tgz"/>
51
52    <!-- API doc -->
53    <property name="icu4j.api.doc.title" value="ICU4J ${api.doc.version} API Specification"/>
54    <property name="icu4j.api.doc.window.title" value="ICU4J ${api.doc.version}"/>
55    <property name="icu4j.api.doc.header" value="ICU4J ${api.doc.version}"/>
56    <property name="icu4j.api.doc.jdk.link" value="http://docs.oracle.com/javase/7/docs/api/"/>
57
58    <!-- directories -->
59    <property name="release.dir" value="release"/>
60    <property name="doc.dir" value="doc"/>
61    <property name="cldr.util.out.dir" value="${out.dir}/cldr_util"/>
62    <property name="cldr.release.dir" value="release_cldr"/>
63
64    <!-- Java version check -->
65    <condition property="is.java6.plus">
66        <or>
67            <contains string="${java.version}" substring="1.6."/>
68            <contains string="${java.version}" substring="1.7."/>
69            <contains string="${java.version}" substring="1.8."/>
70        </or>
71    </condition>
72    <condition property="is.java5">
73        <contains string="${java.version}" substring="1.5."/>
74    </condition>
75    <fail message="The JDK version is too old or unknown.">
76        <condition>
77            <not>
78                <or>
79                    <isset property="is.java6.plus"/>
80                    <isset property="is.java5"/>
81                </or>
82             </not>
83        </condition>
84    </fail>
85
86    <condition property="is.java7">
87            <contains string="${java.version}" substring="1.7."/>
88    </condition>
89
90    <condition property="is.java7.plus">
91        <or>
92            <contains string="${java.version}" substring="1.7."/>
93            <contains string="${java.version}" substring="1.8."/>
94        </or>
95    </condition>
96
97    <condition property="is.java8.plus">
98        <or>
99            <contains string="${java.version}" substring="1.8."/>
100            <contains string="${java.version}" substring="1.9."/>
101        </or>
102    </condition>
103
104    <!-- Build environment info -->
105    <property name="env.COMPUTERNAME" value="${env.HOSTNAME}"/>
106    <target name="info" description="Display the build environment information">
107        <echo message="----- Build Environment Information -------------------"/>
108        <echo message="Java Home:    ${java.home}"/>
109        <echo message="Java Version: ${java.version}"/>
110        <echo message="Ant Home:     ${ant.home}"/>
111        <echo message="Ant Version:  ${ant.version}"/>
112        <echo message="OS:           ${os.name}"/>
113        <echo message="OS Version:   ${os.version}"/>
114        <echo message="OS Arch:      ${os.arch}"/>
115        <echo message="Host:         ${env.COMPUTERNAME}"/>
116        <echo message="-------------------------------------------------------"/>
117    </target>
118
119    <target name="clean" description="Clean up build outputs">
120        <ant dir="${icu4j.core.dir}" target="clean" inheritAll="false"/>
121        <ant dir="${icu4j.collate.dir}" target="clean" inheritAll="false"/>
122        <ant dir="${icu4j.charset.dir}" target="clean" inheritAll="false"/>
123        <ant dir="${icu4j.currdata.dir}" target="clean" inheritAll="false"/>
124        <ant dir="${icu4j.langdata.dir}" target="clean" inheritAll="false"/>
125        <ant dir="${icu4j.localespi.dir}" target="clean" inheritAll="false"/>
126        <ant dir="${icu4j.regiondata.dir}" target="clean" inheritAll="false"/>
127        <ant dir="${icu4j.translit.dir}" target="clean" inheritAll="false"/>
128        <ant dir="${icu4j.test-framework.dir}" target="clean" inheritAll="false"/>
129        <ant dir="${icu4j.core-tests.dir}" target="clean" inheritAll="false"/>
130        <ant dir="${icu4j.collate-tests.dir}" target="clean" inheritAll="false"/>
131        <ant dir="${icu4j.charset-tests.dir}" target="clean" inheritAll="false"/>
132        <ant dir="${icu4j.localespi-tests.dir}" target="clean" inheritAll="false"/>
133        <ant dir="${icu4j.packaging-tests.dir}" target="clean" inheritAll="false"/>
134        <ant dir="${icu4j.translit-tests.dir}" target="clean" inheritAll="false"/>
135        <ant dir="${icu4j.testall.dir}" target="clean" inheritAll="false"/>
136        <ant dir="${icu4j.build-tools.dir}" target="clean" inheritAll="false"/>
137        <ant dir="${icu4j.tools.dir}" target="clean" inheritAll="false"/>
138        <ant dir="${icu4j.demos.dir}" target="clean" inheritAll="false"/>
139        <ant dir="${icu4j.samples.dir}" target="clean" inheritAll="false"/>
140        <ant dir="${icu4j.perf-tests.dir}" target="clean" inheritAll="false"/>
141
142        <!-- delete all .jar files root directory -->
143        <delete>
144            <fileset dir="." includes="icu4j*.jar"/>
145        </delete>
146
147        <delete dir="${release.dir}"/>
148        <delete dir="${doc.dir}"/>
149        <delete dir="${out.dir}"/>
150        <delete dir="${module.dir}"/>
151        <delete dir="${cldr.release.dir}"/>
152
153        <available file="eclipse-build" type="dir" property="eclipse-build.dir.present"/>
154        <antcall target="_clean.eclipse-build"/>
155    </target>
156
157    <target name="_clean.eclipse-build" if="eclipse-build.dir.present">
158        <ant dir="eclipse-build" target="clean" inheritAll="false"/>
159    </target>
160
161    <!-- meta build targets -->
162    <target name="all" depends="info, main, tests, build-tools, tools, demos, samples, perf-tests, jar, docs" description="Build all primary targets"/>
163    <target name="main" depends="info, core, collate, charset, currdata, langdata, regiondata, translit, localespi" description="Build ICU4J runtime library classes"/>
164    <target name="tests" depends="info, core-tests, charset-tests, collate-tests, packaging-tests, translit-tests, testall, localespi-tests" description="Build ICU4J test classes"/>
165
166    <target name="secure" depends="icu4jJar" description="(Deprecated)Build ICU4J API and test classes for running the ICU4J test suite with Java security manager enabled"/>
167
168    <!-- Check to see if JVM_OPTIONS enviroment variable is set. This can be use to set the heap size. -->
169    <property name="env.JVM_OPTIONS" value=""/>
170    <property name="jvm_options" value="${env.JVM_OPTIONS}"/>
171    <target name="check" description="Run the standard ICU4J test suite">
172        <antcall target="_runCheck">
173            <param name="runcheck.arg" value=""/>
174            <param name="runcheck.jvmarg" value="${jvm_options} -ea"/>
175        </antcall>
176    </target>
177
178    <target name="exhaustiveCheck" description="Run the standard ICU4J test suite in exhaustive mode">
179        <antcall target="_runCheck">
180            <param name="runcheck.arg" value="-e10"/>
181            <param name="runcheck.jvmarg" value="${jvm_options} -ea"/>
182        </antcall>
183    </target>
184
185    <target name="timeZoneCheck" description="Run the complete test for TimeZoneRoundTripAll">
186        <antcall target="_runCheck">
187            <param name="runcheck.arg" value="-prop:TimeZoneRoundTripAll=true Core/Format/DateFormat/TimeZoneFormatTest -v"/>
188            <param name="runcheck.jvmarg" value="${jvm_options}"/>
189        </antcall>
190    </target>
191
192    <target name="jdktzCheck" description="Run the standard ICU4J test suite with JDK TimeZone">
193        <antcall target="_runCheck">
194            <param name="runcheck.arg" value=""/>
195            <param name="runcheck.jvmarg" value="${jvm_options} -Dcom.ibm.icu.util.TimeZone.DefaultTimeZoneType=JDK"/>
196        </antcall>
197    </target>
198
199    <target name="_runCheck" depends="main, tests">
200        <echo message="JVM argument:   ${runcheck.jvmarg} -Djava.awt.headless=true"/>
201        <echo message="Test argument:   ${runcheck.arg}"/>
202
203        <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
204            <arg line="${runcheck.arg}"/>
205            <jvmarg line="${runcheck.jvmarg} -Djava.awt.headless=true"/>
206            <classpath>
207                <pathelement location="${icu4j.core.jar}"/>
208                <pathelement location="${icu4j.collate.jar}"/>
209                <pathelement location="${icu4j.charset.jar}"/>
210                <pathelement location="${icu4j.currdata.jar}"/>
211                <pathelement location="${icu4j.langdata.jar}"/>
212                <pathelement location="${icu4j.regiondata.jar}"/>
213                <pathelement location="${icu4j.translit.jar}"/>
214                <pathelement location="${icu4j.test-framework.jar}"/>
215                <pathelement location="${icu4j.core-tests.jar}"/>
216                <pathelement location="${icu4j.collate-tests.jar}"/>
217                <pathelement location="${icu4j.charset-tests.jar}"/>
218                <pathelement location="${icu4j.translit-tests.jar}"/>
219                <pathelement location="${icu4j.testall.jar}"/>
220            </classpath>
221        </java>
222    </target>
223
224    <target name="_runTestArgCheck" unless="testarg">
225        <echo message="No test arguments are supplied."/>
226        <echo message="For specifying test arguments, use '-Dtestarg=[test args]' as"/>
227        <echo message="ant command line argument. For example:"/>
228        <echo message="  &#x3E;ant runTest -Dtestarg=&#x22;Core/Format -e10&#x22;"/>
229        <echo message="for running ICU4J core format test suite in exhaustive mode."/>
230    </target>
231
232    <target name="runTest" depends="_runTestArgCheck" description="Run a ICU4J test case, without calling any other build targets">
233        <echo message="JVM argument:   ${jvm_options} -Djava.awt.headless=true"/>
234        <echo message="Test argument:   ${testarg}"/>
235
236        <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
237            <arg line="${testarg}"/>
238            <jvmarg line="${jvm_options} -Djava.awt.headless=true"/>
239            <classpath>
240                <pathelement location="${icu4j.core.jar}"/>
241                <pathelement location="${icu4j.collate.jar}"/>
242                <pathelement location="${icu4j.charset.jar}"/>
243                <pathelement location="${icu4j.currdata.jar}"/>
244                <pathelement location="${icu4j.langdata.jar}"/>
245                <pathelement location="${icu4j.regiondata.jar}"/>
246                <pathelement location="${icu4j.translit.jar}"/>
247                <pathelement location="${icu4j.test-framework.jar}"/>
248                <pathelement location="${icu4j.core-tests.jar}"/>
249                <pathelement location="${icu4j.collate-tests.jar}"/>
250                <pathelement location="${icu4j.charset-tests.jar}"/>
251                <pathelement location="${icu4j.translit-tests.jar}"/>
252                <pathelement location="${icu4j.testall.jar}"/>
253            </classpath>
254        </java>
255    </target>
256
257    <target name="packagingCheck" depends="info, core, packaging-tests" description="Run packaging tests">
258        <!-- region data but no language data -->
259        <java classname="com.ibm.icu.dev.test.TestPackaging" fork="yes" failonerror="true">
260            <arg line="-w"/>
261            <classpath>
262                <pathelement location="${icu4j.core.jar}"/>
263                <pathelement location="${icu4j.charset.jar}"/>
264                <pathelement location="${icu4j.test-framework.jar}"/>
265                <pathelement location="${icu4j.packaging-tests.jar}"/>
266                <pathelement location="${icu4j.regiondata.jar}"/>
267            </classpath>
268        </java>
269        <!-- language data but no region data -->
270        <java classname="com.ibm.icu.dev.test.TestPackaging" fork="yes" failonerror="true">
271            <arg line="-w"/>
272            <classpath>
273                <pathelement location="${icu4j.core.jar}"/>
274                <pathelement location="${icu4j.charset.jar}"/>
275                <pathelement location="${icu4j.test-framework.jar}"/>
276                <pathelement location="${icu4j.packaging-tests.jar}"/>
277                <pathelement location="${icu4j.langdata.jar}"/>
278            </classpath>
279        </java>
280        <!-- neither region nor language data -->
281        <java classname="com.ibm.icu.dev.test.TestPackaging" fork="yes" failonerror="true">
282            <arg line="-w"/>
283            <classpath>
284                <pathelement location="${icu4j.core.jar}"/>
285                <pathelement location="${icu4j.charset.jar}"/>
286                <pathelement location="${icu4j.test-framework.jar}"/>
287                <pathelement location="${icu4j.packaging-tests.jar}"/>
288            </classpath>
289        </java>
290    </target>
291
292    <target name="coreCheck" depends="info, core, currdata, langdata, regiondata, core-tests" description="Run only the core tests">
293        <java classname="com.ibm.icu.dev.test.TestAllCore" fork="yes" failonerror="true">
294            <classpath>
295                <pathelement location="${icu4j.core.jar}"/>
296                <pathelement location="${icu4j.currdata.jar}"/>
297                <pathelement location="${icu4j.langdata.jar}"/>
298                <pathelement location="${icu4j.regiondata.jar}"/>
299                <pathelement location="${icu4j.test-framework.jar}"/>
300                <pathelement location="${icu4j.core-tests.jar}"/>
301            </classpath>
302        </java>
303    </target>
304
305    <target name="collateCheck" depends="info, core, collate, currdata, langdata, regiondata, core-tests, collate-tests" description="Run only the collation tests">
306        <java classname="com.ibm.icu.dev.test.TestAllCollate" fork="yes" failonerror="true">
307            <classpath>
308                <pathelement location="${icu4j.core.jar}"/>
309                <pathelement location="${icu4j.collate.jar}"/>
310                <pathelement location="${icu4j.test-framework.jar}"/>
311                <pathelement location="${icu4j.collate-tests.jar}"/>
312
313                <!-- for now, collateCheck needs currdata, langdata and regiondata, because of GlobalizationPreferencesTest" -->
314                <pathelement location="${icu4j.currdata.jar}"/>
315                <pathelement location="${icu4j.langdata.jar}"/>
316                <pathelement location="${icu4j.regiondata.jar}"/>
317                <pathelement location="${icu4j.core-tests.jar}"/>
318            </classpath>
319        </java>
320    </target>
321
322    <target name="translitCheck" depends="info, core, translit, translit-tests" description="Run the ICU4J Translit test suite">
323        <java classname="com.ibm.icu.dev.test.TestAllTranslit" fork="yes" failonerror="true">
324            <classpath>
325                <pathelement location="${icu4j.core.jar}"/>
326                <pathelement location="${icu4j.translit.jar}"/>
327                <pathelement location="${icu4j.test-framework.jar}"/>
328                <pathelement location="${icu4j.translit-tests.jar}"/>
329            </classpath>
330        </java>
331    </target>
332
333    <target name="localespiCheck" if="is.java6.plus" depends="info" description="Run the ICU4J Locale SPI test suite">
334        <antcall target="_runLocalespiCheck"/>
335    </target>
336
337    <target name="_runLocalespiCheck" depends="localespi, localespi-tests">
338        <java classname="com.ibm.icu.dev.test.localespi.TestAll" fork="yes" failonerror="true">
339            <jvmarg line="-Djava.ext.dirs=${icu4j.core.dir}/${jar.dir}${path.separator}${icu4j.localespi.dir}/${jar.dir}${path.separator}${icu4j.collate.dir}/${jar.dir}${path.separator}${icu4j.currdata.dir}/${jar.dir}${path.separator}${icu4j.langdata.dir}/${jar.dir}${path.separator}${icu4j.regiondata.dir}/${jar.dir}${path.separator}${java.ext.dirs}"/>
340            <classpath>
341                <pathelement location="${icu4j.localespi-tests.jar}"/>
342                <pathelement location="${icu4j.test-framework.jar}"/>
343            </classpath>
344        </java>
345    </target>
346
347    <target name="secureCheck" depends="main, jar, icu4jtestsJar" description="Run the secure (applet-like) ICU4J test suite">
348        <property name="securecheck.arg" value="-w"/>
349        <property name="securecheck.jvmarg"
350                value="${jvm_options} -Djava.security.manager -Djava.security.policy=${shared.dir}/data/security.policy -Djava.awt.headless=true"/>
351
352        <echo message="JVM argument:   ${securecheck.jvmarg}"/>
353        <echo message="Test argument:  ${securecheck.arg}"/>
354
355        <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
356            <arg line="${securecheck.arg}"/>
357            <jvmarg line="${securecheck.jvmarg}"/>
358            <classpath>
359                <pathelement location="${icu4j.jar.file}"/>
360                <pathelement location="${icu4j-charset.jar.file}"/>
361                <pathelement location="${icu4jtests.jar.file}"/>
362            </classpath>
363        </java>
364    </target>
365
366    <!-- jar targets -->
367    <target name="jar" depends="icu4jJar, charset, localespi" description="Build ICU4J runtime library jar files">
368        <copy file="${icu4j.charset.jar}" tofile="${icu4j-charset.jar.file}"/>
369        <copy file="${icu4j.localespi.jar}" tofile="${icu4j-localespi.jar.file}" failonerror="false"/>
370    </target>
371
372    <target name="icu4jJar" depends="info, core, collate, currdata, langdata, regiondata, translit" description="Build ICU4J all-in-one core jar">
373        <mkdir dir="${out.dir}"/>
374
375        <!-- manifest -->
376        <copy file="manifest.stub" todir="${out.dir}">
377            <filterset>
378                <filter token="SPECVERSION" value="${jar.spec.version}"/>
379                <filter token="IMPLVERSION" value="${jar.impl.version}"/>
380                <filter token="COPYRIGHT" value="${jar.copyright.info}"/>
381                <filter token="EXECENV" value="${jar.exec.env}"/>
382            </filterset>
383        </copy>
384
385        <!-- jar -->
386        <jar jarfile="${icu4j.jar.file}"
387                compress="true"
388                manifest="${out.dir}/manifest.stub">
389            <fileset dir="${icu4j.core.dir}/${bin.dir}" includes="**/*"/>
390            <fileset dir="${icu4j.collate.dir}/${bin.dir}" includes="**/*"/>
391            <fileset dir="${icu4j.currdata.dir}/${bin.dir}" includes="**/*"/>
392            <fileset dir="${icu4j.langdata.dir}/${bin.dir}" includes="**/*"/>
393            <fileset dir="${icu4j.regiondata.dir}/${bin.dir}" includes="**/*"/>
394            <fileset dir="${icu4j.translit.dir}/${bin.dir}" includes="**/*"/>
395            <fileset dir="${shared.dir}/licenses">
396                <include name="license.html"/>
397            </fileset>
398        </jar>
399    </target>
400
401    <target name="icu4jSrcJar" description="Build icu4j-src.jar">
402        <jar jarfile="${icu4j-src.jar.file}"
403                compress="true">
404            <fileset dir="${icu4j.core.dir}/${src.dir}" includes="**/*.java"/>
405            <fileset dir="${icu4j.collate.dir}/${src.dir}" includes="**/*.java"/>
406            <fileset dir="${icu4j.currdata.dir}/${src.dir}" includes="**/*.java"/>
407            <fileset dir="${icu4j.langdata.dir}/${src.dir}" includes="**/*.java"/>
408            <fileset dir="${icu4j.regiondata.dir}/${src.dir}" includes="**/*.java"/>
409            <fileset dir="${icu4j.translit.dir}/${src.dir}" includes="**/*.java"/>
410            <fileset dir="${shared.dir}/licenses">
411                <include name="license.html"/>
412            </fileset>
413        </jar>
414    </target>
415
416    <target name="icu4jtestsJar" depends="info, tests" description="Build ICU4J all-in-one test jar">
417        <jar jarfile="${icu4jtests.jar.file}"
418                compress="true">
419            <fileset dir="${icu4j.test-framework.dir}/${bin.dir}" includes="**/*"/>
420            <fileset dir="${icu4j.core-tests.dir}/${bin.dir}" includes="**/*"/>
421            <fileset dir="${icu4j.collate-tests.dir}/${bin.dir}" includes="**/*"/>
422            <fileset dir="${icu4j.translit-tests.dir}/${bin.dir}" includes="**/*"/>
423            <fileset dir="${icu4j.charset-tests.dir}/${bin.dir}" includes="**/*"/>
424            <fileset dir="${icu4j.testall.dir}/${bin.dir}" includes="**/*"/>
425        </jar>
426    </target>
427
428    <target name="jarDemos" depends="icu4jJar, demos" description="Build ICU4J demo jar file">
429        <copy file="${icu4j.demos.jar}" tofile="${icu4jdemos.jar.file}"/>
430    </target>
431
432
433    <!-- release targets -->
434    <target name="_check_config_for_release">
435        <condition property="release.build.config.ok">
436            <and>
437                <isset property="is.java7"/>
438                <isset property="java5.bootclasspath"/>
439                <isset property="java6.bootclasspath"/>
440                <isset property="jcite.libs"/>
441            </and>
442        </condition>
443    </target>
444
445    <target name="_verify_config_for_release" depends="_check_config_for_release" unless="release.build.config.ok">
446        <condition property="disp.is.java7" value="${java.version}" else="${java.version} - Must be 1.7!">
447            <isset property="is.java7"/>
448        </condition>
449        <condition property="disp.java5.bootclasspath" value="${java5.bootclasspath}" else="Not Defined!">
450            <isset property="java5.bootclasspath"/>
451        </condition>
452        <condition property="disp.java6.bootclasspath" value="${java5.bootclasspath}" else="Not Defined!">
453            <isset property="java6.bootclasspath"/>
454        </condition>
455        <condition property="disp.jcite.libs" value="${jcite.libs}" else="Not Defined!">
456            <isset property="jcite.libs"/>
457        </condition>
458
459        <echo message="################################################################"/>
460        <echo message="[WARNING] Insufficient Build Configuration for ICU4J Release"/>
461        <echo message="JDK Tools Version:              ${disp.is.java7}"/>
462        <echo message="JRE 5 System Library Path:      ${disp.java5.bootclasspath}"/>
463        <echo message="JRE 6 System Library Path:      ${disp.java6.bootclasspath}"/>
464        <echo message="JCite Library Path:             ${disp.jcite.libs}"/>
465        <echo message="################################################################"/>
466    </target>
467
468    <target name="releaseVer" depends="info, releaseBinaries, releaseSrcJars, releaseDocs, releaseSourceArchiveTgz"
469            description="Build all ICU4J release files for distribution with versioned file names">
470        <!-- binaries -->
471        <move file="${release.dir}/${icu4j.jar.file}" tofile="${release.dir}/${icu4j.jar.versioned.file}"/>
472        <move file="${release.dir}/${icu4j-charset.jar.file}" tofile="${release.dir}/${icu4j-charset.jar.versioned.file}"/>
473        <move file="${release.dir}/${icu4j-localespi.jar.file}" tofile="${release.dir}/${icu4j-localespi.jar.versioned.file}"/>
474
475        <!-- source jars -->
476        <move file="${release.dir}/${icu4j-src.jar.file}" tofile="${release.dir}/${icu4j-src.jar.versioned.file}"/>
477        <move file="${release.dir}/${icu4j-charset-src.jar.file}" tofile="${release.dir}/${icu4j-charset-src.jar.versioned.file}"/>
478        <move file="${release.dir}/${icu4j-localespi-src.jar.file}" tofile="${release.dir}/${icu4j-localespi-src.jar.versioned.file}"/>
479
480        <!-- docs -->
481        <move file="${release.dir}/${icu4jdocs.jar.file}" tofile="${release.dir}/${icu4jdocs.jar.versioned.file}"/>
482
483        <!-- package archive -->
484        <move file="${release.dir}/${icu4jsrc.tgz.file}" tofile="${release.dir}/${icu4jsrc.tgz.versioned.file}"/>
485
486        <!-- md5 checksum file -->
487        <mkdir dir="${out.dir}/checksum"/>
488        <delete dir="${out.dir}/checksum" includes="**/*"/>
489
490        <checksum todir="${out.dir}/checksum" format="MD5SUM">
491            <fileset dir="${release.dir}">
492                <include name="*.jar"/>
493                <include name="*.tgz"/>
494            </fileset>
495        </checksum>
496
497        <concat destfile="${release.dir}/icu4j-${release.file.ver}.md5">
498            <fileset dir="${out.dir}/checksum" includes="*"/>
499            <filterchain>
500                <fixcrlf eol="lf"/>
501            </filterchain>
502        </concat>
503
504        <antcall target="_verify_config_for_release"/>
505    </target>
506
507    <target name="release" depends="info, releaseBinaries, releaseSrcJars, releaseDocs, releaseSourceArchiveTgz" description="Build all ICU4J release files for distribution">
508        <mkdir dir="${out.dir}/checksum"/>
509        <delete dir="${out.dir}/checksum" includes="**/*"/>
510
511        <checksum todir="${out.dir}/checksum" format="MD5SUM">
512            <fileset dir="${release.dir}">
513                <include name="*.jar"/>
514                <include name="*.tgz"/>
515            </fileset>
516        </checksum>
517
518        <concat destfile="${release.dir}/icu4j.md5">
519            <fileset dir="${out.dir}/checksum" includes="*"/>
520            <filterchain>
521                <fixcrlf eol="lf"/>
522            </filterchain>
523        </concat>
524
525        <antcall target="_verify_config_for_release"/>
526    </target>
527
528    <target name="releaseBinaries" depends="icu4jJar, charset, localespi" description="Build ICU4J binary files for distribution">
529        <mkdir dir="${release.dir}"/>
530        <copy file="${icu4j.jar.file}" tofile="${release.dir}/${icu4j.jar.file}"/>
531        <copy file="${icu4j.charset.jar}" tofile="${release.dir}/${icu4j-charset.jar.file}"/>
532        <copy file="${icu4j.localespi.jar}" tofile="${release.dir}/${icu4j-localespi.jar.file}"/>
533    </target>
534
535    <target name="releaseSrcJars" depends="icu4jSrcJar" description="Build ICU4J src jar files for distribution">
536        <mkdir dir="${release.dir}"/>
537
538        <!-- icu4j src-jar -->
539        <copy file="${icu4j-src.jar.file}" tofile="${release.dir}/${icu4j-src.jar.file}"/>
540
541        <!-- charset/localespi src-jar -->
542        <ant dir="${icu4j.charset.dir}" target="src-jar" inheritAll="false"/>
543        <ant dir="${icu4j.localespi.dir}" target="src-jar" inheritAll="false"/>
544
545        <copy file="${icu4j.charset.dir}/${out.dir}/lib/${icu4j-charset-src.jar.file}" tofile="${release.dir}/${icu4j-charset-src.jar.file}"/>
546        <copy file="${icu4j.localespi.dir}/${out.dir}/lib/${icu4j-localespi-src.jar.file}" tofile="${release.dir}/${icu4j-localespi-src.jar.file}"/>
547    </target>
548
549
550    <target name="releaseDocs" depends="docs" description="Build ICU4J API reference doc jar file for distribution">
551        <mkdir dir="${release.dir}"/>
552        <jar jarfile="${release.dir}/${icu4jdocs.jar.file}" compress="true" basedir="${doc.dir}"/>
553    </target>
554
555    <property name="src.release.wrk.dir" value="${out.dir}/tmpsrc"/>
556
557    <target name="releaseSourceArchiveZip" description="Build ICU4J source release archive (.zip)">
558        <delete dir="${src.release.wrk.dir}"/>
559        <delete file="${icu4jsrc.zip.file}"/>
560
561        <mkdir dir="${src.release.wrk.dir}"/>
562
563        <fixcrlf srcdir="."
564                destdir="${src.release.wrk.dir}"
565                encoding="UTF-8"
566                eol="crlf">
567            <include name="demos/**/*"/>
568            <include name="main/**/*"/>
569            <include name="perf-tests/**/*"/>
570            <include name="samples/**/*"/>
571            <include name="tools/**/*"/>
572            <include name="*.html"/>
573            <include name="*.xml"/>
574            <include name="*.properties"/>
575            <include name="*.css"/>
576            <include name="*.stub"/>
577            <exclude name="**/out/**/*"/>
578            <exclude name="**/*.jar"/>
579            <exclude name="**/build-local.properties"/>
580            <exclude name="main/tests/core/src/com/ibm/icu/dev/data/rbbi/english.dict"/>
581            <exclude name="main/tests/core/src/com/ibm/icu/dev/test/serializable/data/**/*.dat"/>
582            <exclude name="main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.*.tri2"/>
583            <exclude name="tools/build/icu4j*.api*.gz"/>
584        </fixcrlf>
585
586        <mkdir dir="${release.dir}"/>
587        <zip destfile="${release.dir}/${icu4jsrc.zip.file}">
588            <fileset dir="${src.release.wrk.dir}" includes="**/*"/>
589            <fileset dir="${basedir}">
590                <include name="main/shared/data/*.jar"/>
591                <include name="main/tests/core/src/com/ibm/icu/dev/data/rbbi/english.dict"/>
592                <include name="main/tests/core/src/com/ibm/icu/dev/test/serializable/data/**/*.dat"/>
593                <include name="main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.*.tri2"/>
594                <include name="tools/build/icu4j*.api*.gz"/>
595            </fileset>
596        </zip>
597
598        <delete dir="${src.release.wrk.dir}"/>
599    </target>
600
601    <target name="releaseSourceArchiveTgz" description="Build ICU4J source release archive (.tgz)">
602        <delete dir="${src.release.wrk.dir}"/>
603        <delete file="${icu4jsrc.tgz.file}"/>
604
605        <mkdir dir="${src.release.wrk.dir}"/>
606
607        <fixcrlf srcdir="."
608                destdir="${src.release.wrk.dir}"
609                encoding="UTF-8"
610                eol="lf">
611            <include name="demos/**/*"/>
612            <include name="main/**/*"/>
613            <include name="perf-tests/**/*"/>
614            <include name="samples/**/*"/>
615            <include name="tools/**/*"/>
616            <include name="*.html"/>
617            <include name="*.xml"/>
618            <include name="*.properties"/>
619            <include name="*.css"/>
620            <include name="*.stub"/>
621            <exclude name="**/out/**/*"/>
622            <exclude name="**/*.jar"/>
623            <exclude name="**/build-local.properties"/>
624            <exclude name="main/tests/core/src/com/ibm/icu/dev/data/rbbi/english.dict"/>
625            <exclude name="main/tests/core/src/com/ibm/icu/dev/test/serializable/data/**/*.dat"/>
626            <exclude name="main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.*.tri2"/>
627            <exclude name="tools/build/icu4j*.api*.gz"/>
628        </fixcrlf>
629
630        <property name="icu4jsrc.tar" value="${out.dir}/icu4jsrc.tar"/>
631
632        <tar destfile="${icu4jsrc.tar}" longfile="gnu">
633            <fileset dir="${src.release.wrk.dir}" includes="**/*"/>
634            <fileset dir="${basedir}">
635                <include name="main/shared/data/*.jar"/>
636                <include name="main/tests/core/src/com/ibm/icu/dev/data/rbbi/english.dict"/>
637                <include name="main/tests/core/src/com/ibm/icu/dev/test/serializable/data/**/*.dat"/>
638                <include name="main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.*.tri2"/>
639                <include name="tools/build/icu4j*.api*.gz"/>
640            </fileset>
641        </tar>
642
643        <mkdir dir="${release.dir}"/>
644        <gzip destfile="${release.dir}/${icu4jsrc.tgz.file}" src="${icu4jsrc.tar}"/>
645
646        <delete dir="${src.release.wrk.dir}"/>
647        <delete file="${icu4jsrc.tar}"/>
648    </target>
649
650    <!-- findbugs targets -->
651
652    <target name="findbugs" description="Run FindBugs on all library sub projects.">
653        <property name="findbugs.out.dir" value="${out.dir}/findbugs"/>
654        <mkdir dir="${findbugs.out.dir}"/>
655
656        <ant dir="${icu4j.core.dir}" inheritAll="false" target="findbugs"/>
657        <copy file="${icu4j.core.dir}/${out.dir}/fb-core.html" todir="${findbugs.out.dir}"/>
658
659        <ant dir="${icu4j.collate.dir}" inheritAll="false" target="findbugs"/>
660        <copy file="${icu4j.collate.dir}/${out.dir}/fb-collate.html" todir="${findbugs.out.dir}"/>
661
662        <ant dir="${icu4j.currdata.dir}" inheritAll="false" target="findbugs"/>
663        <copy file="${icu4j.currdata.dir}/${out.dir}/fb-currdata.html" todir="${findbugs.out.dir}"/>
664
665        <ant dir="${icu4j.langdata.dir}" inheritAll="false" target="findbugs"/>
666        <copy file="${icu4j.langdata.dir}/${out.dir}/fb-langdata.html" todir="${findbugs.out.dir}"/>
667
668        <ant dir="${icu4j.regiondata.dir}" inheritAll="false" target="findbugs"/>
669        <copy file="${icu4j.regiondata.dir}/${out.dir}/fb-regiondata.html" todir="${findbugs.out.dir}"/>
670
671        <ant dir="${icu4j.translit.dir}" inheritAll="false" target="findbugs"/>
672        <copy file="${icu4j.translit.dir}/${out.dir}/fb-translit.html" todir="${findbugs.out.dir}"/>
673
674
675        <ant dir="${icu4j.charset.dir}" inheritAll="false" target="findbugs"/>
676        <copy file="${icu4j.charset.dir}/${out.dir}/fb-charset.html" todir="${findbugs.out.dir}"/>
677
678        <ant dir="${icu4j.localespi.dir}" inheritAll="false" target="findbugs"/>
679        <copy file="${icu4j.localespi.dir}/${out.dir}/fb-localespi.html" todir="${findbugs.out.dir}"/>
680    </target>
681
682    <!-- compile targets -->
683    <target name="core" description="Build core classes">
684        <ant dir="${icu4j.core.dir}" inheritAll="false"/>
685    </target>
686
687    <target name="collate" depends="core" description="Build collation classes">
688        <ant dir="${icu4j.collate.dir}" inheritAll="false"/>
689    </target>
690
691    <target name="charset" depends="core" description="Build charset classes">
692        <ant dir="${icu4j.charset.dir}" inheritAll="false"/>
693    </target>
694
695    <target name="currdata" depends="core" description="Build currency data classes">
696        <ant dir="${icu4j.currdata.dir}" inheritAll="false"/>
697    </target>
698
699    <target name="langdata" depends="core" description="Build language data classes">
700        <ant dir="${icu4j.langdata.dir}" inheritAll="false"/>
701    </target>
702
703    <target name="localespi" if="is.java6.plus" description="Build Locale SPI classes">
704        <antcall target="_build-localespi"/>
705    </target>
706
707    <target name="_build-localespi" depends="core, collate, currdata, langdata, regiondata">
708        <ant dir="${icu4j.localespi.dir}" inheritAll="false"/>
709    </target>
710
711    <target name="regiondata" depends="core" description="Build region data classes">
712        <ant dir="${icu4j.regiondata.dir}" inheritAll="false"/>
713    </target>
714
715    <target name="translit" depends="core" description="Build translit classes">
716        <ant dir="${icu4j.translit.dir}" inheritAll="false"/>
717    </target>
718
719    <target name="test-framework" depends="core" description="Build test framework classes">
720        <ant dir="${icu4j.test-framework.dir}" inheritAll="false"/>
721    </target>
722
723    <target name="core-tests" depends="core, test-framework" description="Build core tests">
724        <ant dir="${icu4j.core-tests.dir}" inheritAll="false"/>
725    </target>
726
727    <target name="collate-tests" depends="collate, test-framework" description="Build core tests">
728        <ant dir="${icu4j.collate-tests.dir}" inheritAll="false"/>
729    </target>
730
731    <target name="charset-tests" depends="charset, test-framework" description="Build charset tests">
732        <ant dir="${icu4j.charset-tests.dir}" inheritAll="false"/>
733    </target>
734
735    <target name="localespi-tests" if="is.java6.plus" description="Build Locale SPI tests">
736        <antcall target="_build-localespi-tests"/>
737    </target>
738
739    <target name="_build-localespi-tests" depends="localespi, test-framework">
740        <ant dir="${icu4j.localespi-tests.dir}" inheritAll="false"/>
741    </target>
742
743    <target name="packaging-tests" depends="test-framework" description="Build packaging tests">
744        <ant dir="${icu4j.packaging-tests.dir}" inheritAll="false"/>
745    </target>
746
747    <target name="translit-tests" depends="translit, test-framework" description="Build translit tests">
748        <ant dir="${icu4j.translit-tests.dir}" inheritAll="false"/>
749    </target>
750
751    <target name="testall" depends="test-framework" description="Build top level TestAll">
752        <ant dir="${icu4j.testall.dir}" inheritAll="false"/>
753    </target>
754
755    <target name="demos" depends="core, charset, translit" description="Build demo classes">
756        <ant dir="${icu4j.demos.dir}" inheritAll="false"/>
757    </target>
758
759    <target name="samples" depends="core, charset, collate, translit" description="Build sample classes">
760        <ant dir="${icu4j.samples.dir}" inheritAll="false"/>
761    </target>
762
763    <target name="build-tools" description="Build build-tool classes">
764        <ant dir="${icu4j.build-tools.dir}" inheritAll="false"/>
765    </target>
766
767    <target name="tools" depends="core, core-tests, collate, translit, translit-tests" description="Build tool classes">
768        <ant dir="${icu4j.tools.dir}" inheritAll="false"/>
769    </target>
770
771    <target name="perf-tests" if="is.java6.plus" depends="core, charset, collate, tools" description="Build performance test classes">
772        <ant dir="${icu4j.perf-tests.dir}" inheritAll="false"/>
773    </target>
774
775    <!-- doc targets -->
776    <target name="docs" depends="info, build-tools, _checkJCite, _docsWithJCite, _docsWithoutJCite" description="Build API documents"/>
777
778    <target name="docsStrict" description="Build API documents with all doclint check enabled">
779        <condition property="doclint.option" value="-Xdoclint:all">
780            <isset property="is.java8.plus"/>
781        </condition>
782        <antcall target="docs"/>
783    </target>
784
785    <target name="_checkJCite" if="env.JCITE_DIR">
786        <fileset dir="${env.JCITE_DIR}" id="jcite.files">
787            <include name="build/*.jar"/>
788            <include name="lib/*.jar"/>
789        </fileset>
790        <pathconvert property="jcite.libs" refid="jcite.files"/>
791
792        <dirset dir="${basedir}" id="jcite.src.dirs">
793            <include name="samples/src"/>
794            <include name="demos/src"/>
795            <include name="main/tests/*/src"/>
796        </dirset>
797        <pathconvert property="jcite.addl.src" refid="jcite.src.dirs"/>
798    </target>
799
800    <target name="_docsStyleSheet">
801        <condition property="docs.style.sheet" value="stylesheet7.css" else="stylesheet.css">
802            <isset property="is.java7.plus"/>
803        </condition>
804    </target>
805
806    <target name="_docsLintOption" unless="doclint.options">
807        <!-- syntax check is disabled because JCite tag name "@.jcite" is invalidated -->
808        <condition property="doclint.option" value="-Xdoclint:all,-accessibility,-syntax" else="">
809            <isset property="is.java8.plus"/>
810        </condition>
811    </target>
812
813    <target name="_docsWithJCite" depends="_docsStyleSheet, _docsLintOption" if="jcite.libs">
814        <echo message="Javadoc lint option:            ${doclint.option}"/>
815        <echo message="JCite library path:             ${jcite.libs}"/>
816        <echo message="JCite additional source path:   ${jcite.addl.src}"/>
817        <echo message="Custom stylesheet:              ${docs.style.sheet}"/>
818        <javadoc
819                destdir="${doc.dir}"
820                nodeprecatedlist="true"
821                windowtitle="${icu4j.api.doc.window.title}"
822                doctitle="${icu4j.api.doc.title}"
823                header="${icu4j.api.doc.header}"
824                encoding="${java.src.encoding}"
825                docencoding="UTF-8"
826                charset="UTF-8"
827                bottom="&lt;font size=-1&gt;Copyright (c) ${current.year} IBM Corporation and others.&lt;/font&gt;"
828                additionalparam="${doclint.option} -breakiterator -use -tagletpath ${icu4j.build-tools.jar}${path.separator}${jcite.libs} -taglet com.ibm.icu.dev.tool.docs.ICUTaglet -taglet ch.arrenbrecht.jcite.JCiteTaglet -J-Djcitesourcepath=${jcite.addl.src} -J-Dfile.encoding=UTF-8"
829                link="${icu4j.api.doc.jdk.link}"
830                source="1.5"
831                stylesheetfile="${docs.style.sheet}"
832                failonerror="true">
833            <packageset dir="${icu4j.core.dir}/src">
834                <include name="com/ibm/icu/lang/**"/>
835                <include name="com/ibm/icu/math/**"/>
836                <include name="com/ibm/icu/text/**"/>
837                <include name="com/ibm/icu/util/**"/>
838            </packageset>
839            <packageset dir="${icu4j.collate.dir}/src">
840                <include name="com/ibm/icu/text/**"/>
841            </packageset>
842            <packageset dir="${icu4j.translit.dir}/src">
843                <include name="com/ibm/icu/text/**"/>
844            </packageset>
845            <packageset dir="${icu4j.charset.dir}/src">
846                <include name="com/ibm/icu/charset/**"/>
847            </packageset>
848        </javadoc>
849    </target>
850
851    <target name="_docsWithoutJCite" depends="_docsStyleSheet, _docsLintOption" unless="jcite.libs">
852        <echo message="Javadoc lint option:            ${doclint.option}"/>
853        <javadoc
854                destdir="${doc.dir}"
855                nodeprecatedlist="true"
856                windowtitle="${icu4j.api.doc.window.title}"
857                doctitle="${icu4j.api.doc.title}"
858                header="${icu4j.api.doc.header}"
859                encoding="${java.src.encoding}"
860                docencoding="UTF-8"
861                charset="UTF-8"
862                bottom="&lt;font size=-1&gt;Copyright (c) ${current.year} IBM Corporation and others.&lt;/font&gt;"
863                additionalparam="${doclint.option} -breakiterator -use -tagletpath ${icu4j.build-tools.jar} -taglet com.ibm.icu.dev.tool.docs.ICUTaglet"
864                link="${icu4j.api.doc.jdk.link}"
865                source="1.5"
866                failonerror="true">
867            <packageset dir="${icu4j.core.dir}/src">
868                <include name="com/ibm/icu/lang/**"/>
869                <include name="com/ibm/icu/math/**"/>
870                <include name="com/ibm/icu/text/**"/>
871                <include name="com/ibm/icu/util/**"/>
872            </packageset>
873            <packageset dir="${icu4j.collate.dir}/src">
874                <include name="com/ibm/icu/text/**"/>
875            </packageset>
876            <packageset dir="${icu4j.translit.dir}/src">
877                <include name="com/ibm/icu/text/**"/>
878            </packageset>
879            <packageset dir="${icu4j.charset.dir}/src">
880                <include name="com/ibm/icu/charset/**"/>
881            </packageset>
882        </javadoc>
883    </target>
884
885    <!-- JaCoCo code coverage target -->
886    <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml" onerror="ignore">
887        <classpath path="${env.JACOCO_DIR}/lib/jacocoant.jar"/>
888    </taskdef>
889
890    <target name="coverageJaCoCo" depends="jar, tests" description="Run the ICU4J unit tests and generate code coverage report">
891        <property name="jacoco.out.dir" value="${out.dir}/jacoco"/>
892        <property name="jacoco.exec.data.file" value="${jacoco.out.dir}/jacoco.exec"/>
893        <property name="jacoco.report.html.zip" value="${jacoco.out.dir}/report_html.zip"/>
894        <property name="jacoco.report.xml" value="${jacoco.out.dir}/report.xml"/>
895        <property name="jacoco.report.csv" value="${jacoco.out.dir}/report.csv"/>
896
897        <delete dir="${jacoco.out.dir}"/>
898        <mkdir dir="${jacoco.out.dir}"/>
899
900        <jacoco:coverage destfile="${jacoco.exec.data.file}">
901            <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
902                <jvmarg line="${jvm_options} -ea -Djava.awt.headless=true"/>
903                <classpath>
904                    <pathelement location="${icu4j.jar.file}"/>
905                    <pathelement location="${icu4j-charset.jar.file}"/>
906                    <pathelement location="${icu4j.test-framework.jar}"/>
907                    <pathelement location="${icu4j.core-tests.jar}"/>
908                    <pathelement location="${icu4j.collate-tests.jar}"/>
909                    <pathelement location="${icu4j.charset-tests.jar}"/>
910                    <pathelement location="${icu4j.translit-tests.jar}"/>
911                    <pathelement location="${icu4j.testall.jar}"/>
912            </classpath>
913        </java>
914        </jacoco:coverage>
915
916        <jacoco:report>
917            <executiondata>
918                <file file="${jacoco.exec.data.file}"/>
919            </executiondata>
920
921            <structure name="ICU4J Project">
922                <classfiles>
923                    <fileset dir=".">
924                        <include name="${icu4j.jar.file}"/>
925                        <include name="${icu4j-charset.jar.file}"/>
926                    </fileset>
927                </classfiles>
928                <sourcefiles encoding="UTF-8">
929                    <fileset dir="${icu4j.core.dir}/src"/>
930                    <fileset dir="${icu4j.collate.dir}/src"/>
931                    <fileset dir="${icu4j.currdata.dir}/src"/>
932                    <fileset dir="${icu4j.langdata.dir}/src"/>
933                    <fileset dir="${icu4j.regiondata.dir}/src"/>
934                    <fileset dir="${icu4j.translit.dir}/src"/>
935
936                    <fileset dir="${icu4j.charset.dir}/src"/>
937                </sourcefiles>
938            </structure>
939
940            <html destfile="${jacoco.report.html.zip}"/>
941            <xml destfile="${jacoco.report.xml}"/>
942            <csv destfile="${jacoco.report.csv}"/>
943        </jacoco:report>
944    </target>
945
946    <!-- Clover code coverage target -->
947    <property name="clover.out.dir" value="${out.dir}/clover"/>
948    <property name="clover.jar" location="${env.CLOVER_DIR}/clover.jar"/>
949    <taskdef resource="cloverlib.xml" classpath="${clover.jar}" onerror="ignore"/>
950
951    <target name="codeCoverage" depends="clean" description="Generate code coverage report with clover">
952        <!-- Set up clover -->
953        <mkdir dir="${clover.out.dir}"/>
954        <clover-setup initstring="${clover.out.dir}/clover.db">
955            <files>
956                <exclude name="**/dev/**/*.java"/>
957            </files>
958            <methodContext name="API" regexp="(.* )?public .*"/>
959        </clover-setup>
960
961        <!-- Build components with clover instrumentation -->
962        <ant dir="${icu4j.core.dir}" inheritAll="false" inheritRefs="true">
963            <property name="build.compiler" value="${build.compiler}"/>
964        </ant>
965        <ant dir="${icu4j.collate.dir}" inheritAll="false" inheritRefs="true">
966            <property name="build.compiler" value="${build.compiler}"/>
967        </ant>
968        <ant dir="${icu4j.charset.dir}" inheritAll="false" inheritRefs="true">
969            <property name="build.compiler" value="${build.compiler}"/>
970        </ant>
971        <ant dir="${icu4j.currdata.dir}" inheritAll="false" inheritRefs="true">
972            <property name="build.compiler" value="${build.compiler}"/>
973        </ant>
974        <ant dir="${icu4j.langdata.dir}" inheritAll="false" inheritRefs="true">
975            <property name="build.compiler" value="${build.compiler}"/>
976        </ant>
977        <ant dir="${icu4j.regiondata.dir}" inheritAll="false" inheritRefs="true">
978            <property name="build.compiler" value="${build.compiler}"/>
979        </ant>
980        <ant dir="${icu4j.translit.dir}" inheritAll="false" inheritRefs="true">
981            <property name="build.compiler" value="${build.compiler}"/>
982        </ant>
983        <ant dir="${icu4j.test-framework.dir}" inheritAll="false" inheritRefs="true">
984            <property name="build.compiler" value="${build.compiler}"/>
985        </ant>
986        <ant dir="${icu4j.core-tests.dir}" inheritAll="false" inheritRefs="true">
987            <property name="build.compiler" value="${build.compiler}"/>
988        </ant>
989        <ant dir="${icu4j.collate-tests.dir}" inheritAll="false" inheritRefs="true">
990            <property name="build.compiler" value="${build.compiler}"/>
991        </ant>
992        <ant dir="${icu4j.charset-tests.dir}" inheritAll="false" inheritRefs="true">
993            <property name="build.compiler" value="${build.compiler}"/>
994        </ant>
995        <ant dir="${icu4j.translit-tests.dir}" inheritAll="false" inheritRefs="true">
996            <property name="build.compiler" value="${build.compiler}"/>
997        </ant>
998        <ant dir="${icu4j.testall.dir}" inheritAll="false" inheritRefs="true">
999            <property name="build.compiler" value="${build.compiler}"/>
1000        </ant>
1001
1002        <!-- Run the test suites -->
1003        <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
1004            <classpath>
1005                <pathelement location="${icu4j.core.jar}"/>
1006                <pathelement location="${icu4j.collate.jar}"/>
1007                <pathelement location="${icu4j.charset.jar}"/>
1008                <pathelement location="${icu4j.currdata.jar}"/>
1009                <pathelement location="${icu4j.langdata.jar}"/>
1010                <pathelement location="${icu4j.regiondata.jar}"/>
1011                <pathelement location="${icu4j.translit.jar}"/>
1012                <pathelement location="${icu4j.test-framework.jar}"/>
1013                <pathelement location="${icu4j.core-tests.jar}"/>
1014                <pathelement location="${icu4j.collate-tests.jar}"/>
1015                <pathelement location="${icu4j.charset-tests.jar}"/>
1016                <pathelement location="${icu4j.translit-tests.jar}"/>
1017                <pathelement location="${icu4j.testall.jar}"/>
1018                <pathelement location="${clover.jar}"/>
1019            </classpath>
1020        </java>
1021
1022        <!-- Generate HTML coverage report -->
1023        <!-- <clover-html-report outdir="${clover.out.dir}/html" title="ICU4J Code Coverage"/> -->
1024        <clover-report>
1025            <current outfile="${clover.out.dir}/html" title="ICU4J Code Coverage">
1026                <format type="html" filter="assert" />
1027            </current>
1028        </clover-report>
1029    </target>
1030
1031    <!-- Release management targets -->
1032    <target name="checktags" depends="info, build-tools" description="Check API tags before release">
1033        <javadoc source="1.5"
1034                 encoding="${java.src.encoding}">
1035            <packageset dir="${icu4j.core.dir}/src">
1036                <include name="com/ibm/icu/lang/**"/>
1037                <include name="com/ibm/icu/math/**"/>
1038                <include name="com/ibm/icu/text/**"/>
1039                <include name="com/ibm/icu/util/**"/>
1040            </packageset>
1041            <packageset dir="${icu4j.collate.dir}/src">
1042                <include name="com/ibm/icu/**"/>
1043            </packageset>
1044            <packageset dir="${icu4j.charset.dir}/src">
1045                <include name="com/ibm/icu/charset/**"/>
1046            </packageset>
1047            <doclet name="com.ibm.icu.dev.tool.docs.CheckTags" path="${icu4j.build-tools.jar}"/>
1048        </javadoc>
1049    </target>
1050
1051    <target name="gatherapi" depends="info, build-tools" description="Run API database generator tool">
1052        <mkdir dir="${out.dir}"/>
1053        <javadoc source="1.5"
1054                 encoding="${java.src.encoding}">
1055            <packageset dir="${icu4j.core.dir}/src">
1056                <include name="com/ibm/icu/lang/**"/>
1057                <include name="com/ibm/icu/math/**"/>
1058                <include name="com/ibm/icu/text/**"/>
1059                <include name="com/ibm/icu/util/**"/>
1060            </packageset>
1061            <packageset dir="${icu4j.collate.dir}/src">
1062                <include name="com/ibm/icu/text/**"/>
1063                <include name="com/ibm/icu/util/**"/>
1064            </packageset>
1065            <packageset dir="${icu4j.charset.dir}/src">
1066                <include name="com/ibm/icu/charset/**"/>
1067            </packageset>
1068            <packageset dir="${icu4j.translit.dir}/src">
1069                <include name="com/ibm/icu/text/**"/>
1070            </packageset>
1071            <doclet name="com.ibm.icu.dev.tool.docs.GatherAPIData" path="${icu4j.build-tools.jar}">
1072                <param name="-name" value="ICU4J ${icu4j.impl.version}"/>
1073                <param name="-output" value="${out.dir}/icu4j${api.report.version}.api3"/>
1074                <param name="-internal"/>
1075                <param name="-version"/>
1076                <param name="-gzip"/>
1077            </doclet>
1078        </javadoc>
1079    </target>
1080
1081    <target name="apireport" depends="info, gatherapi" description="Run API report generator tool">
1082        <java classname="com.ibm.icu.dev.tool.docs.ReportAPI"
1083                classpath="${icu4j.build-tools.jar}"
1084                failonerror="true">
1085            <arg value="-old:" />
1086            <arg value="${icu4j.build-tools.dir}/icu4j${api.report.prev.version}.api3.gz" />
1087            <arg value="-new:" />
1088            <arg value="${out.dir}/icu4j${api.report.version}.api3.gz" />
1089            <arg value="-html" />
1090            <arg value="-out:" />
1091            <arg value="${out.dir}/icu4j_compare_${api.report.prev.version}_${api.report.version}.html" />
1092        </java>
1093    </target>
1094
1095    <target name="gatherapiOld" depends="info, build-tools" description="Run API database generator tool (Pre Java 5 style)">
1096        <mkdir dir="${out.dir}"/>
1097        <javadoc source="1.5"
1098                 encoding="${java.src.encoding}">
1099            <packageset dir="${icu4j.core.dir}/src">
1100                <include name="com/ibm/icu/lang/**"/>
1101                <include name="com/ibm/icu/math/**"/>
1102                <include name="com/ibm/icu/text/**"/>
1103                <include name="com/ibm/icu/util/**"/>
1104            </packageset>
1105            <packageset dir="${icu4j.collate.dir}/src">
1106                <include name="com/ibm/icu/text/**"/>
1107                <include name="com/ibm/icu/util/**"/>
1108            </packageset>
1109            <packageset dir="${icu4j.charset.dir}/src">
1110                <include name="com/ibm/icu/charset/**"/>
1111            </packageset>
1112            <packageset dir="${icu4j.translit.dir}/src">
1113                <include name="com/ibm/icu/text/**"/>
1114            </packageset>
1115            <doclet name="com.ibm.icu.dev.tool.docs.GatherAPIDataOld" path="${icu4j.build-tools.jar}">
1116                <param name="-name" value="ICU4J ${icu4j.impl.version}"/>
1117                <param name="-output" value="${out.dir}/icu4j${api.report.version}.api"/>
1118                <param name="-internal"/>
1119                <param name="-gzip"/>
1120            </doclet>
1121        </javadoc>
1122    </target>
1123
1124    <target name="apireportOld" depends="info, gatherapiOld" description="Run API report generator tool (Pre Java 5 Style)">
1125        <java classname="com.ibm.icu.dev.tool.docs.ReportAPI"
1126                classpath="${icu4j.build-tools.jar}"
1127                failonerror="true">
1128            <arg value="-old:" />
1129            <arg value="${icu4j.build-tools.dir}/icu4j${api.report.prev.version}.api.gz" />
1130            <arg value="-new:" />
1131            <arg value="${out.dir}/icu4j${api.report.version}.api.gz" />
1132            <arg value="-html" />
1133            <arg value="-internal" />
1134            <arg value="-out:" />
1135            <arg value="${out.dir}/icu4j_compare_${api.report.prev.version}_${api.report.version}.html" />
1136        </java>
1137    </target>
1138
1139    <target name="checkDeprecated" depends="info, build-tools, gatherapi, main"
1140        description="Check consistency between javadoc @deprecated and @Deprecated annotation">
1141        <java classname="com.ibm.icu.dev.tool.docs.DeprecatedAPIChecker"
1142                failonerror="true">
1143            <arg value="${out.dir}/icu4j${api.report.version}.api3.gz" />
1144            <classpath>
1145                <pathelement location="${icu4j.build-tools.jar}"/>
1146                <pathelement location="${icu4j.core.jar}"/>
1147                <pathelement location="${icu4j.collate.jar}"/>
1148                <pathelement location="${icu4j.charset.jar}"/>
1149                <pathelement location="${icu4j.currdata.jar}"/>
1150                <pathelement location="${icu4j.langdata.jar}"/>
1151                <pathelement location="${icu4j.regiondata.jar}"/>
1152                <pathelement location="${icu4j.translit.jar}"/>
1153            </classpath>
1154        </java>
1155    </target>
1156
1157    <target name="draftAPIs" depends="info, gatherapi" description="Run API collector tool and generate draft API report">
1158        <java classname="com.ibm.icu.dev.tool.docs.CollectAPI"
1159                classpath="${icu4j.build-tools.jar}"
1160                failonerror="true">
1161            <arg value="-f"/>
1162            <arg value="Draft"/>
1163            <arg value="-o"/>
1164            <arg value="${out.dir}/draftAPIs.html"/>
1165            <arg value="${out.dir}/icu4j${api.report.version}.api3.gz" />
1166        </java>
1167    </target>
1168
1169    <target name="swatDeprecated" depends="build-tools" description="Convert @deprecated @draft tags to @provisional">
1170        <antcall target="_runSwatDeprecated">
1171            <param name="swat.deprecated.opt" value="-dep"/>
1172        </antcall>
1173    </target>
1174
1175    <target name="swatProvisional" depends="build-tools" description="Convert @provisional tags to @deprecated @draft">
1176        <antcall target="_runSwatDeprecated">
1177            <param name="swat.deprecated.opt" value="-prov"/>
1178        </antcall>
1179    </target>
1180
1181    <target name="_runSwatDeprecated">
1182        <java classname="com.ibm.icu.dev.tool.docs.SwatDeprecated"
1183                classpath="${icu4j.build-tools.jar}"
1184                failonerror="true">
1185            <arg value="${swat.deprecated.opt}"/>
1186            <arg value="-src"/>
1187            <arg value="${icu4j.core.dir}/src"/>
1188            <arg value="-dst"/>
1189            <arg value="${icu4j.core.dir}/src"/>
1190            <arg value="-overwrite"/>
1191            <arg value="-verbose"/>
1192        </java>
1193        <java classname="com.ibm.icu.dev.tool.docs.SwatDeprecated"
1194                classpath="${icu4j.build-tools.jar}"
1195                failonerror="true">
1196            <arg value="${swat.deprecated.opt}"/>
1197            <arg value="-src"/>
1198            <arg value="${icu4j.charset.dir}/src"/>
1199            <arg value="-dst"/>
1200            <arg value="${icu4j.charset.dir}/src"/>
1201            <arg value="-overwrite"/>
1202            <arg value="-verbose"/>
1203        </java>
1204    </target>
1205
1206    <target name="serialTestData" depends="main, tests">
1207        <property name="serial.test.data.dir" value="${out.dir}/serialTestData"/>
1208        <delete dir="${serial.test.data.dir}"/>
1209        <mkdir dir="${serial.test.data.dir}"/>
1210        <java classname="com.ibm.icu.dev.test.serializable.SerializableWriter" fork="yes" failonerror="true">
1211            <arg line="${serial.test.data.dir}"/>
1212            <classpath>
1213                <pathelement location="${icu4j.core.jar}"/>
1214                <pathelement location="${icu4j.collate.jar}"/>
1215                <pathelement location="${icu4j.charset.jar}"/>
1216                <pathelement location="${icu4j.currdata.jar}"/>
1217                <pathelement location="${icu4j.langdata.jar}"/>
1218                <pathelement location="${icu4j.regiondata.jar}"/>
1219                <pathelement location="${icu4j.translit.jar}"/>
1220                <pathelement location="${icu4j.test-framework.jar}"/>
1221                <pathelement location="${icu4j.core-tests.jar}"/>
1222            </classpath>
1223        </java>
1224        <echo message="Note: The serialization compatibility test data files were"/>
1225        <echo message="created in ${serial.test.data.dir}. Once you confirm"/>
1226        <echo message="the test runs clean, you should copy the data file directory to"/>
1227        <echo message="main/tests/core/src/com/ibm/icu/dev/test/serializable/data."/>
1228    </target>
1229
1230    <!-- Special packaging targets -->
1231    <target name="translitIMEJar" depends="info" description="Build transliterator IME 'icutransime.jar' jar file">
1232        <property name="translit.ime.out.dir" value="${out.dir}/translit_ime"/>
1233
1234        <mkdir dir="${translit.ime.out.dir}/bin"/>
1235        <javac destdir="${translit.ime.out.dir}/bin"
1236                source="${javac.source}"
1237                target="${javac.target}"
1238                encoding="${java.src.encoding}"
1239                debug="on" deprecation="off">
1240            <src path="${icu4j.core.dir}/src"/>
1241            <src path="${icu4j.translit.dir}/src"/>
1242            <src path="${icu4j.tools.dir}/src"/>
1243            <include name="com/ibm/icu/dev/tool/ime/translit/*.java"/>
1244        </javac>
1245
1246        <copy file="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/translit/Transliterator.properties"
1247                todir="${translit.ime.out.dir}/bin/com/ibm/icu/dev/tool/ime/translit"/>
1248
1249        <mkdir dir="${translit.ime.out.dir}/lib"/>
1250        <jar jarfile="${translit.ime.out.dir}/lib/icutransime.jar"
1251                compress="true"
1252                basedir="${translit.ime.out.dir}/bin"
1253                includes="com/ibm/icu/dev/tool/ime/translit/**/*"
1254                manifest="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/translit/manifest.stub">
1255            <metainf dir="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/translit" includes="services/*" />
1256        </jar>
1257    </target>
1258
1259    <target name="indicIMEJar" depends="info" description="Build indic IME 'icuindicime.jar' jar file">
1260        <property name="indic.ime.out.dir" value="${out.dir}/indic_ime"/>
1261
1262        <mkdir dir="${indic.ime.out.dir}/bin"/>
1263        <javac destdir="${indic.ime.out.dir}/bin"
1264                source="${javac.source}"
1265                target="${javac.target}"
1266                encoding="${java.src.encoding}"
1267                debug="on" deprecation="off">
1268            <src path="${icu4j.core.dir}/src"/>
1269            <src path="${icu4j.tools.dir}/src"/>
1270            <include name="com/ibm/icu/dev/tool/ime/indic/*.java"/>
1271        </javac>
1272
1273        <copy file="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/indic/DisplayNames.properties"
1274                todir="${indic.ime.out.dir}/bin/com/ibm/icu/dev/tool/ime/indic"/>
1275
1276        <mkdir dir="${indic.ime.out.dir}/lib"/>
1277        <jar jarfile="${indic.ime.out.dir}/lib/icuindicime.jar"
1278                compress="true"
1279                basedir="${indic.ime.out.dir}/bin"
1280                includes="com/ibm/icu/dev/tool/ime/indic/**/*"
1281                manifest="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/indic/manifest.stub">
1282            <metainf dir="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/indic" includes="services/*" />
1283        </jar>
1284    </target>
1285
1286    <target name="cldrUtil" depends="icu4jJar" description="Build Utilities for CLDR tooling">
1287        <mkdir dir="${cldr.util.out.dir}/bin"/>
1288        <javac destdir="${cldr.util.out.dir}/bin"
1289                source="${javac.source}"
1290                target="${javac.target}"
1291                encoding="${java.src.encoding}"
1292                debug="on" deprecation="off"
1293                classpath="${icu4j.jar.file}">
1294
1295            <src path="${icu4j.tools.dir}/src"/>
1296            <src path="${icu4j.translit-tests.dir}/src"/>
1297            <src path="${icu4j.test-framework.dir}/src"/>
1298
1299            <include name="com/ibm/icu/dev/test/TestFmwk.java" />
1300            <include name="com/ibm/icu/dev/util/*.java" />
1301            <include name="com/ibm/icu/dev/tool/UOption.java" />
1302        </javac>
1303
1304        <mkdir dir="${cldr.util.out.dir}/lib"/>
1305        <jar jarfile="${cldr.util.out.dir}/lib/utilities.jar"
1306                compress="true"
1307                basedir="${cldr.util.out.dir}/bin">
1308            <include name="com/ibm/icu/dev/test/*.class"/>
1309            <include name="com/ibm/icu/dev/util/*.class"/>
1310            <include name="com/ibm/icu/dev/tool/UOption*.class"/>
1311        </jar>
1312    </target>
1313
1314    <target name="releaseCLDR" depends="icu4jJar,icu4jSrcJar,cldrUtil" description="Build release files for CLDR tooling">
1315        <mkdir dir="${cldr.release.dir}"/>
1316        <!-- icu4j.jar -->
1317        <copy file="${icu4j.jar.file}" todir="${cldr.release.dir}"/>
1318        <!-- icu4j-src.jar -->
1319        <copy file="${icu4j-src.jar.file}" todir="${cldr.release.dir}"/>
1320        <!-- utilities.jar -->
1321        <copy file="${cldr.util.out.dir}/lib/utilities.jar" todir="${cldr.release.dir}"/>
1322        <!-- utilities-src.jar -->
1323        <jar jarfile="${cldr.release.dir}/utilities-src.jar" compress="true">
1324            <fileset dir="${icu4j.test-framework.dir}/${src.dir}">
1325                <include name="com/ibm/icu/dev/test/TestFmwk.java"/>
1326                <include name="com/ibm/icu/dev/test/*Log*.java"/>
1327                <include name="com/ibm/icu/dev/test/TestUtil.java"/>
1328                <include name="com/ibm/icu/dev/test/UTF16Util.java"/>
1329            </fileset>
1330            <fileset dir="${icu4j.test-framework.dir}/${src.dir}" includes="com/ibm/icu/dev/util/*.java"/>
1331            <fileset dir="${icu4j.translit-tests.dir}/${src.dir}" includes="com/ibm/icu/dev/util/*.java"/>
1332            <fileset dir="${icu4j.tools.dir}/${src.dir}" includes="com/ibm/icu/dev/tool/UOption.java"/>
1333       </jar>
1334    </target>
1335
1336    <target name="xliff" description="Build xliff converter tool">
1337        <property name="xliff.out.dir" value="${out.dir}/xliff"/>
1338
1339        <mkdir dir="${xliff.out.dir}/bin"/>
1340        <javac destdir="${xliff.out.dir}/bin"
1341                source="1.3"
1342                target="1.3"
1343                encoding="${java.src.encoding}"
1344                debug="on" deprecation="off">
1345            <src path="${icu4j.tools.dir}/src"/>
1346            <include name="com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java"/>
1347            <include name="com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java"/>
1348            <include name="com/ibm/icu/dev/tool/UOption.java"/>
1349       </javac>
1350
1351        <mkdir dir="${xliff.out.dir}/lib"/>
1352
1353        <jar jarfile="${xliff.out.dir}/lib/xliff-src.jar"
1354                compress="true"
1355                basedir="${icu4j.tools.dir}/src">
1356            <include name="com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java"/>
1357            <include name="com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java"/>
1358            <include name="com/ibm/icu/dev/tool/UOption.java"/>
1359        </jar>
1360
1361        <jar jarfile="${xliff.out.dir}/lib/xliff.jar"
1362                compress="true"
1363                basedir="${xliff.out.dir}/bin"
1364                manifest="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/localeconverter/manifest.stub"/>
1365    </target>
1366
1367
1368    <!-- ICU4J modularization targets -->
1369    <property name="module.dir" value="${out.dir}/module"/>
1370    <property name="module.bin.dir" value="${module.dir}/bin"/>
1371    <property name="module.tests.dir" value="${module.dir}/tests"/>
1372    <property name="module.jar.dir" value="${module.dir}/lib"/>
1373    <property name="module.jar" value="${module.jar.dir}/icu4j-module.jar"/>
1374
1375    <target name="moduleJar" description="Create a ICU4J module jar file">
1376        <mkdir dir="${module.jar.dir}"/>
1377        <jar jarfile="${module.jar}"
1378                compress="true"
1379                basedir="${module.bin.dir}">
1380            <manifest>
1381                <attribute name="Built-By" value="${corp}" />
1382                <section name="com/ibm/icu">
1383                    <attribute name="Specification-Title" value="ICU4J Modularized Build" />
1384                    <attribute name="Specification-Version" value="${jar.spec.version}" />
1385                    <attribute name="Specification-Vendor" value="ICU" />
1386                    <attribute name="Implementation-Title" value=" ICU for Java Module" />
1387                    <attribute name="Implementation-Version" value="${jar.impl.version}" />
1388                    <attribute name="Implementation-Vendor" value="${corp}" />
1389                    <attribute name="Implementation-Vendor-Id" value="com.ibm" />
1390                    <attribute name="Copyright-Info" value="${jar.copyright.info}" />
1391                    <attribute name="Sealed" value="false" />
1392                </section>
1393            </manifest>
1394        </jar>
1395        <copy file="${module.jar}" tofile="icu4j.jar"/>
1396    </target>
1397
1398    <target name="moduleCheck" description="Run tests for a ICU4J module jar">
1399        <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
1400            <arg value="-nodata"/>
1401            <classpath>
1402                <pathelement location="${module.jar}"/>
1403                <pathelement location="${module.tests.dir}"/>
1404            </classpath>
1405        </java>
1406    </target>
1407
1408    <patternset id="common.test.sources">
1409        <include name="com/ibm/icu/dev/test/TestFmwk.java"/>
1410        <include name="com/ibm/icu/dev/test/TestLog.java"/>
1411        <include name="com/ibm/icu/dev/test/TestUtil.java"/>
1412        <include name="com/ibm/icu/dev/test/UTF16Util.java"/>
1413        <include name="com/ibm/icu/dev/test/TestAll.java"/>
1414        <include name="com/ibm/icu/dev/test/TestAllCore.java"/>
1415    </patternset>
1416
1417    <!-- Break Iterator -->
1418    <target name="breakIterator" depends="_copyFullPropsData" description="Modular build of break iterator services">
1419        <mkdir dir="${module.bin.dir}"/>
1420        <javac srcdir="${icu4j.core.dir}/src"
1421                destdir="${module.bin.dir}"
1422                source="${javac.source}"
1423                target="${javac.target}"
1424                encoding="${java.src.encoding}"
1425                debug="on" deprecation="off">
1426            <include name="com/ibm/icu/impl/UCharacterName.java"/>
1427            <include name="com/ibm/icu/impl/data/*Break*.java"/>
1428            <include name="com/ibm/icu/lang/**/*.java"/>
1429            <include name="com/ibm/icu/text/*BreakIterator*.java"/>
1430            <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
1431        </javac>
1432    </target>
1433
1434    <target name="breakIteratorTests" depends="breakIterator" description="Modular build of break iterator test suite">
1435        <mkdir dir="${module.tests.dir}"/>
1436        <javac destdir="${module.tests.dir}"
1437                source="${javac.source}"
1438                target="${javac.target}"
1439                encoding="${java.src.encoding}"
1440                classpath="${module.bin.dir}"
1441                debug="on" deprecation="off">
1442            <src path="${icu4j.core.dir}/src"/>
1443            <src path="${icu4j.test-framework.dir}/src"/>
1444            <src path="${icu4j.core-tests.dir}/src"/>
1445            <src path="${icu4j.testall.dir}/src"/>
1446
1447            <patternset refid="common.test.sources"/>
1448            <include name="com/ibm/icu/dev/test/rbbi/**/*.java"/>
1449        </javac>
1450
1451        <copy file="${icu4j.core-tests.dir}/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt"
1452                todir="${module.tests.dir}/com/ibm/icu/dev/test/rbbi"/>
1453    </target>
1454
1455    <!-- Calendar -->
1456    <target name="calendar" description="Modular build of calendar services">
1457        <mkdir dir="${module.bin.dir}"/>
1458        <javac srcdir="${icu4j.core.dir}/src"
1459                destdir="${module.bin.dir}"
1460                source="${javac.source}"
1461                target="${javac.target}"
1462                encoding="${java.src.encoding}"
1463                debug="on" deprecation="off">
1464            <include name="com/ibm/icu/impl/data/*Holiday*.java"/>
1465            <include name="com/ibm/icu/impl/TimeZoneNames*.java"/>
1466            <include name="com/ibm/icu/lang/UCharacter.java"/>
1467            <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
1468            <include name="com/ibm/icu/text/NumberFormatServiceShim.java"/>
1469            <include name="com/ibm/icu/util/*Calendar*.java"/>
1470        </javac>
1471
1472        <!-- Calendar does not require Collation data, BreakIterator data -->
1473        <unjar src="${icu4j.data.jar}" dest="${module.bin.dir}">
1474            <patternset>
1475                <include name="**/pnames.icu" />
1476                <include name="**/ucase.icu" />
1477                <include name="**/unorm.icu" />
1478                <include name="**/uprops.icu" />
1479                <include name="**/unames.icu" />
1480                <include name="**/*.res" />
1481                <exclude name="**/coll/*.res" />
1482                <exclude name="**/translit/*.res" />
1483            </patternset>
1484        </unjar>
1485        <unjar src="${icu4j.tzdata.jar}" dest="${module.bin.dir}">
1486            <patternset>
1487                <include name="**/*.res" />
1488            </patternset>
1489        </unjar>
1490    </target>
1491
1492    <target name="calendarTests" depends="calendar" description="Modular build of calendar test suite">
1493        <mkdir dir="${module.tests.dir}"/>
1494        <javac destdir="${module.tests.dir}"
1495                source="${javac.source}"
1496                target="${javac.target}"
1497                encoding="${java.src.encoding}"
1498                classpath="${module.bin.dir}"
1499                debug="on" deprecation="off">
1500            <src path="${icu4j.core.dir}/src"/>
1501            <src path="${icu4j.test-framework.dir}/src"/>
1502            <src path="${icu4j.core-tests.dir}/src"/>
1503            <src path="${icu4j.testall.dir}/src"/>
1504
1505            <patternset refid="common.test.sources"/>
1506            <include name="com/ibm/icu/dev/test/calendar/**/*.java" />
1507        </javac>
1508
1509        <unjar src="${icu4j.testdata.jar}" dest="${module.tests.dir}">
1510            <patternset>
1511                <include name="**/calendar.res"/>
1512            </patternset>
1513        </unjar>
1514    </target>
1515
1516    <!-- Collator -->
1517    <!-- this module will soon be obsolete, use the collate jar -->
1518    <target name="collator" description="Modular build of collator services">
1519        <mkdir dir="${module.bin.dir}"/>
1520        <javac  destdir="${module.bin.dir}"
1521                source="${javac.source}"
1522                target="${javac.target}"
1523                encoding="${java.src.encoding}"
1524                debug="on" deprecation="off">
1525            <src path="${icu4j.core.dir}/src"/>
1526            <src path="${icu4j.collate.dir}/src"/>
1527
1528            <include name="com/ibm/icu/impl/coll/*.java"/>
1529            <include name="com/ibm/icu/impl/data/*Break*.java"/>
1530            <include name="com/ibm/icu/text/*BreakIterator*.java"/>
1531            <include name="com/ibm/icu/text/*Collation*.java"/>
1532            <include name="com/ibm/icu/text/*Collator*.java"/>
1533            <include name="com/ibm/icu/text/Normalizer.java"/>
1534            <include name="com/ibm/icu/text/Replaceable.java"/>
1535            <include name="com/ibm/icu/text/ReplaceableString.java"/>
1536            <include name="com/ibm/icu/text/UnicodeFilter.java"/>
1537            <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
1538            <include name="com/ibm/icu/text/UTF16.java"/>
1539        </javac>
1540
1541        <unjar src="${icu4j.data.jar}" dest="${module.bin.dir}">
1542            <patternset>
1543                <include name="**/*.icu"/>
1544                <include name="**/coll/*.res"/>
1545                <include name="**/*.brk"/>
1546                <include name="**/*.nrm"/>
1547                <include name="**/icudt${icu4j.data.version}b/res_index.res"/>
1548                <include name="**/keyTypeData.res"/>
1549            </patternset>
1550        </unjar>
1551    </target>
1552
1553    <target name="collatorTests" depends="collator" description="Modular build of collator test suite">
1554        <mkdir dir="${module.tests.dir}"/>
1555        <javac destdir="${module.tests.dir}"
1556                source="${javac.source}"
1557                target="${javac.target}"
1558                encoding="${java.src.encoding}"
1559                classpath="${module.bin.dir}"
1560                debug="on" deprecation="off">
1561            <src path="${icu4j.core.dir}/src"/>
1562            <src path="${icu4j.test-framework.dir}/src"/>
1563            <src path="${icu4j.collate-tests.dir}/src"/>
1564            <src path="${icu4j.testall.dir}/src"/>
1565
1566            <patternset refid="common.test.sources"/>
1567            <include name="com/ibm/icu/dev/test/TestAllCollate.java"/>
1568            <include name="com/ibm/icu/dev/test/collator/**/*.java"/>
1569            <include name="java,com/ibm/icu/dev/test/search/**/*.java"/>
1570            <exclude name="com/ibm/icu/dev/test/collator/AlphabeticIndexTest.java"/>
1571            <exclude name="com/ibm/icu/dev/test/collator/RandomCollator.java"/>
1572            <exclude name="com/ibm/icu/dev/test/collator/IndexCharactersTest.java"/>
1573        </javac>
1574
1575        <copy todir="${module.tests.dir}">
1576            <fileset dir="${icu4j.collate-tests.dir}/src">
1577                <include name="com/ibm/icu/dev/data/*.txt"/>
1578            </fileset>
1579        </copy>
1580    </target>
1581
1582    <!-- Compression -->
1583    <target name="compression" description="Modular build of compression services">
1584        <mkdir dir="${module.bin.dir}"/>
1585        <javac srcdir="${icu4j.core.dir}/src"
1586                destdir="${module.bin.dir}"
1587                source="${javac.source}"
1588                target="${javac.target}"
1589                encoding="${java.src.encoding}"
1590                debug="on" deprecation="off">
1591            <include name="com/ibm/icu/text/SCSU.java"/>
1592            <include name="com/ibm/icu/text/UnicodeCompressor.java"/>
1593            <include name="com/ibm/icu/text/UnicodeDecompressor.java"/>
1594        </javac>
1595    </target>
1596
1597    <target name="compressionTests" depends="compression" description="Modular build of compression test suite">
1598        <mkdir dir="${module.tests.dir}"/>
1599        <javac destdir="${module.tests.dir}"
1600                source="${javac.source}"
1601                target="${javac.target}"
1602                encoding="${java.src.encoding}"
1603                classpath="${module.bin.dir}"
1604                debug="on" deprecation="off">
1605            <src path="${icu4j.core.dir}/src"/>
1606            <src path="${icu4j.test-framework.dir}/src"/>
1607            <src path="${icu4j.core-tests.dir}/src"/>
1608            <src path="${icu4j.testall.dir}/src"/>
1609
1610            <patternset refid="common.test.sources"/>
1611            <include name="com/ibm/icu/dev/test/compression/**/*.java"/>
1612        </javac>
1613    </target>
1614
1615    <!-- Format -->
1616    <target name="format" description="Modular build of format services">
1617        <mkdir dir="${module.bin.dir}"/>
1618        <javac srcdir="${icu4j.core.dir}/src"
1619                destdir="${module.bin.dir}"
1620                source="${javac.source}"
1621                target="${javac.target}"
1622                encoding="${java.src.encoding}"
1623                debug="on" deprecation="off">
1624            <include name="com/ibm/icu/impl/LocaleDisplayNamesImpl.java"/>
1625            <include name="com/ibm/icu/impl/TimeZoneNames*.java"/>
1626            <include name="com/ibm/icu/lang/UCharacter.java"/>
1627            <include name="com/ibm/icu/text/BreakIteratorFactory.java"/>
1628            <include name="com/ibm/icu/text/*Collator*.java"/>
1629            <include name="com/ibm/icu/text/*Format*.java"/>
1630            <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
1631            <include name="com/ibm/icu/util/CalendarServiceShim.java"/>
1632        </javac>
1633
1634        <javac srcdir="${icu4j.regiondata.dir}/src"
1635                destdir="${module.bin.dir}"
1636                source="${javac.source}"
1637                target="${javac.target}"
1638                encoding="${java.src.encoding}"
1639                debug="on" deprecation="off"/>
1640
1641        <javac srcdir="${icu4j.currdata.dir}/src"
1642                destdir="${module.bin.dir}"
1643                source="${javac.source}"
1644                target="${javac.target}"
1645                encoding="${java.src.encoding}"
1646                debug="on" deprecation="off"/>
1647
1648        <unjar src="${icu4j.data.jar}" dest="${module.bin.dir}">
1649            <patternset>
1650                <include name="**/*.icu"/>
1651                <include name="**/*.brk"/>
1652                <include name="**/*.res"/>
1653                <exclude name="**/translit/*.res"/>
1654            </patternset>
1655        </unjar>
1656        <unjar src="${icu4j.tzdata.jar}" dest="${module.bin.dir}">
1657            <patternset>
1658                <include name="**/*.res" />
1659            </patternset>
1660        </unjar>
1661    </target>
1662
1663    <target name="formatTests" depends="format" description="Modular build of format test suite">
1664        <mkdir dir="${module.tests.dir}"/>
1665        <javac destdir="${module.tests.dir}"
1666                source="${javac.source}"
1667                target="${javac.target}"
1668                encoding="${java.src.encoding}"
1669                classpath="${module.bin.dir}"
1670                debug="on" deprecation="off">
1671            <src path="${icu4j.core.dir}/src"/>
1672            <src path="${icu4j.test-framework.dir}/src"/>
1673            <src path="${icu4j.core-tests.dir}/src"/>
1674            <src path="${icu4j.testall.dir}/src"/>
1675
1676            <patternset refid="common.test.sources"/>
1677            <include name="com/ibm/icu/dev/test/format/**/*.java"/>
1678            <exclude name="com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java"/>
1679        </javac>
1680
1681        <unjar src="${icu4j.testdata.jar}" dest="${module.tests.dir}">
1682            <patternset>
1683                <include name="**/format.res"/>
1684            </patternset>
1685        </unjar>
1686
1687        <copy file="${icu4j.core-tests.dir}/src/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt"
1688                todir="${module.tests.dir}/com/ibm/icu/dev/test/format"/>
1689
1690        <copy file="${icu4j.core-tests.dir}/src/com/ibm/icu/dev/data/numberformattestspecification.txt"
1691                todir="${module.tests.dir}/com/ibm/icu/dev/data"/>
1692
1693    </target>
1694
1695    <!-- Normalizer -->
1696    <target name="normalizer" description="Modular build of normalizer services">
1697        <mkdir dir="${module.bin.dir}"/>
1698        <javac srcdir="${icu4j.core.dir}/src"
1699                destdir="${module.bin.dir}"
1700                source="${javac.source}"
1701                target="${javac.target}"
1702                encoding="${java.src.encoding}"
1703                debug="on" deprecation="off">
1704            <include name="com/ibm/icu/lang/**/*"/>
1705            <include name="com/ibm/icu/text/CanonicalIterator.java"/>
1706            <include name="com/ibm/icu/text/Normalizer.java"/>
1707            <include name="com/ibm/icu/text/Replaceable.java"/>
1708            <include name="com/ibm/icu/text/ReplaceableString.java"/>
1709            <include name="com/ibm/icu/text/UCharacterIterator.java"/>
1710            <include name="com/ibm/icu/text/UForwardCharacterIterator.java"/>
1711            <include name="com/ibm/icu/text/UnicodeFilter.java"/>
1712            <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
1713            <include name="com/ibm/icu/text/UTF16.java"/>
1714        </javac>
1715
1716        <unjar src="${icu4j.data.jar}" dest="${module.bin.dir}">
1717            <patternset>
1718                <include name="**/ubidi.icu"/>
1719                <include name="**/ucase.icu"/>
1720                <include name="**/unorm.icu"/>
1721                <include name="**/uprops.icu"/>
1722                <include name="**/pnames.icu"/>
1723                <include name="**/unames.icu"/>
1724                <include name="**/*.nrm"/>
1725            </patternset>
1726        </unjar>
1727    </target>
1728
1729    <target name="normalizerTests" depends="normalizer" description="Modular build of normalizer test suite">
1730        <mkdir dir="${module.tests.dir}"/>
1731        <javac destdir="${module.tests.dir}"
1732                source="${javac.source}"
1733                target="${javac.target}"
1734                encoding="${java.src.encoding}"
1735                classpath="${module.bin.dir}"
1736                debug="on" deprecation="off">
1737            <src path="${icu4j.core.dir}/src"/>
1738            <src path="${icu4j.test-framework.dir}/src"/>
1739            <src path="${icu4j.core-tests.dir}/src"/>
1740            <src path="${icu4j.testall.dir}/src"/>
1741
1742            <patternset refid="common.test.sources"/>
1743            <include name="com/ibm/icu/dev/test/normalizer/**/*.java"/>
1744            <exclude name="com/ibm/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java"/>
1745        </javac>
1746
1747        <copy todir="${module.tests.dir}">
1748            <fileset dir="${icu4j.core-tests.dir}/src">
1749                <include name="com/ibm/icu/dev/data/unicode/*.txt"/>
1750            </fileset>
1751        </copy>
1752
1753        <unjar src="${icu4j.testdata.jar}" dest="${module.tests.dir}">
1754            <patternset>
1755                <include name="**/testnorm.nrm"/>
1756            </patternset>
1757        </unjar>
1758
1759    </target>
1760
1761    <!-- Character Properties -->
1762    <target name="_copyBasicPropsData">
1763        <mkdir dir="${module.bin.dir}"/>
1764        <unjar src="${icu4j.data.jar}" dest="${module.bin.dir}">
1765            <patternset>
1766                <include name="**/unorm.icu"/>
1767                <include name="**/uprops.icu"/>
1768                <include name="**/ubidi.icu"/>
1769                <include name="**/ucase.icu"/>
1770                <include name="**/pnames.icu"/>
1771                <include name="**/unames.icu"/>
1772                <include name="**/*.nrm"/>
1773            </patternset>
1774        </unjar>
1775    </target>
1776
1777    <target name="_copyFullPropsData">
1778        <mkdir dir="${module.bin.dir}"/>
1779        <unjar src="${icu4j.data.jar}" dest="${module.bin.dir}">
1780            <patternset>
1781                <include name="**/unorm.icu"/>
1782                <include name="**/uprops.icu"/>
1783                <include name="**/ubidi.icu"/>
1784                <include name="**/ucase.icu"/>
1785                <include name="**/unames.icu"/>
1786                <include name="**/pnames.icu"/>
1787                <include name="**/*.res"/>
1788                <include name="**/*.brk"/>
1789                <include name="**/*.dict"/>
1790                <include name="**/*.nrm"/>
1791                <exclude name="**/coll/*.res"/>
1792                <exclude name="**/translit/*.res"/>
1793                <exclude name="**/rbnf/*.res"/>
1794            </patternset>
1795        </unjar>
1796        <unjar src="${icu4j.tzdata.jar}" dest="${module.bin.dir}">
1797            <patternset>
1798                <include name="**/*.res" />
1799            </patternset>
1800        </unjar>
1801    </target>
1802
1803    <target name="_propertiesClasses">
1804        <mkdir dir="${module.bin.dir}"/>
1805        <javac srcdir="${icu4j.core.dir}/src"
1806                destdir="${module.bin.dir}"
1807                source="${javac.source}"
1808                target="${javac.target}"
1809                encoding="${java.src.encoding}"
1810                debug="on" deprecation="off">
1811            <include name="com/ibm/icu/impl/data/*Break*.java"/>
1812            <include name="com/ibm/icu/lang/**/*"/>
1813            <include name="com/ibm/icu/text/*BreakDictionary*.java"/>
1814            <include name="com/ibm/icu/text/*BreakIterator*.java"/>
1815            <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
1816        </javac>
1817    </target>
1818
1819    <target name="_propertiesTests">
1820        <mkdir dir="${module.tests.dir}"/>
1821        <javac destdir="${module.tests.dir}"
1822                source="${javac.source}"
1823                target="${javac.target}"
1824                encoding="${java.src.encoding}"
1825                classpath="${module.bin.dir}"
1826                debug="on" deprecation="off">
1827            <src path="${icu4j.core.dir}/src"/>
1828            <src path="${icu4j.test-framework.dir}/src"/>
1829            <src path="${icu4j.core-tests.dir}/src"/>
1830            <src path="${icu4j.testall.dir}/src"/>
1831
1832            <patternset refid="common.test.sources"/>
1833            <include name="com/ibm/icu/dev/test/lang/**/*.java"/>
1834            <exclude name="com/ibm/icu/dev/test/lang/TestUScriptRun.java"/>
1835        </javac>
1836
1837        <copy todir="${module.tests.dir}">
1838            <fileset dir="${icu4j.core-tests.dir}/src">
1839                <include name="com/ibm/icu/dev/data/unicode/SpecialCasing.txt"/>
1840                <include name="com/ibm/icu/dev/data/unicode/UnicodeData.txt"/>
1841            </fileset>
1842        </copy>
1843    </target>
1844
1845    <target name="propertiesBasic" depends="_propertiesClasses, _copyBasicPropsData" description="Modular build of basic character properties"/>
1846
1847    <target name="propertiesBasicTests" depends="propertiesBasic, _propertiesTests" description="Modular build of basic character properties test suite"/>
1848
1849    <target name="propertiesFull" depends="_propertiesClasses, _copyFullPropsData" description="Modular build of full character properties"/>
1850
1851    <target name="propertiesFullTests" depends="propertiesFull, _propertiesTests" description="Modular build of full character properties test suite"/>
1852
1853    <!-- Transliterator -->
1854    <!-- this module will soon be obsolete, use the translit jar -->
1855    <target name="transliterator" depends="_propertiesClasses" description="Modular build of transliterator services">
1856        <mkdir dir="${module.bin.dir}"/>
1857        <javac  destdir="${module.bin.dir}"
1858                source="${javac.source}"
1859                target="${javac.target}"
1860                encoding="${java.src.encoding}"
1861                debug="on" deprecation="off">
1862            <src path="${icu4j.core.dir}/src"/>
1863            <src path="${icu4j.translit.dir}/src"/>
1864
1865            <include name="com/ibm/icu/impl/*Iterator*.java"/>
1866            <include name="com/ibm/icu/impl/*Property*.java"/>
1867            <include name="com/ibm/icu/impl/data/ResourceReader.java"/>
1868            <include name="com/ibm/icu/impl/UtilityExtensions.java"/>
1869            <include name="com/ibm/icu/text/*Transliterator*.java"/>
1870            <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
1871            <include name="com/ibm/icu/text/BreakIteratorFactory.java"/>
1872        </javac>
1873
1874        <unjar src="${icu4j.data.jar}" dest="${module.bin.dir}">
1875            <patternset>
1876                <include name="**/unorm.icu"/>
1877                <include name="**/uprops.icu"/>
1878                <include name="**/ubidi.icu"/>
1879                <include name="**/ucase.icu"/>
1880                <include name="**/unames.icu"/>
1881                <include name="**/pnames.icu"/>
1882                <include name="**/*.brk"/>
1883                <include name="**/*.dict"/>
1884                <include name="**/*.nrm"/>
1885                <include name="**/brkitr/*.res"/>
1886                <include name="**/translit/*.res"/>
1887                <include name="**/likelySubtags.res"/>
1888            </patternset>
1889        </unjar>
1890    </target>
1891
1892    <target name="transliteratorTests" depends="transliterator" description="Modular build of transliterator test suite">
1893        <mkdir dir="${module.tests.dir}"/>
1894        <javac destdir="${module.tests.dir}"
1895                source="${javac.source}"
1896                target="${javac.target}"
1897                encoding="${java.src.encoding}"
1898                classpath="${module.bin.dir}"
1899                debug="on" deprecation="off">
1900            <src path="${icu4j.core.dir}/src"/>
1901            <src path="${icu4j.test-framework.dir}/src"/>
1902            <src path="${icu4j.translit-tests.dir}/src"/>
1903            <src path="${icu4j.testall.dir}/src"/>
1904
1905            <patternset refid="common.test.sources"/>
1906            <include name="com/ibm/icu/dev/test/TestAllTranslit.java"/>
1907            <include name="com/ibm/icu/dev/test/translit/**/*.java"/>
1908            <exclude name="com/ibm/icu/dev/test/translit/UnicodeFilterLogic*.java"/>
1909        </javac>
1910
1911        <copy file="${icu4j.translit-tests.dir}/src/com/ibm/icu/dev/test/translit/langtagRegex.txt"
1912                todir="${module.tests.dir}/com/ibm/icu/dev/test/translit"/>
1913    </target>
1914
1915    <!-- StringPrep -->
1916    <target name="stringPrep" depends="normalizer" description="Modular build of stringprep services">
1917        <mkdir dir="${module.bin.dir}"/>
1918        <javac srcdir="${icu4j.core.dir}/src"
1919                destdir="${module.bin.dir}"
1920                source="${javac.source}"
1921                target="${javac.target}"
1922                encoding="${java.src.encoding}"
1923                debug="on" deprecation="off">
1924            <include name="com/ibm/icu/impl/*StringPrep*.java"/>
1925            <include name="com/ibm/icu/text/*IDNA*.java"/>
1926            <include name="com/ibm/icu/text/*StringPrep*.java"/>
1927        </javac>
1928
1929        <unjar src="${icu4j.data.jar}" dest="${module.bin.dir}">
1930            <patternset>
1931                <include name="**/*.spp"/>
1932                <include name="**/ubidi.icu"/>
1933                <include name="**/ucase.icu"/>
1934                <include name="**/unorm.icu"/>
1935                <include name="**/uprops.icu"/>
1936                <include name="**/pnames.icu"/>
1937                <include name="**/unames.icu"/>
1938            </patternset>
1939        </unjar>
1940    </target>
1941
1942    <target name="stringPrepTests" depends="stringPrep" description="Modular build of stringprep test suite">
1943        <mkdir dir="${module.tests.dir}"/>
1944        <javac destdir="${module.tests.dir}"
1945                source="${javac.source}"
1946                target="${javac.target}"
1947                encoding="${java.src.encoding}"
1948                classpath="${module.bin.dir}"
1949                debug="on" deprecation="off">
1950            <src path="${icu4j.core.dir}/src"/>
1951            <src path="${icu4j.test-framework.dir}/src"/>
1952            <src path="${icu4j.core-tests.dir}/src"/>
1953            <src path="${icu4j.testall.dir}/src"/>
1954
1955            <patternset refid="common.test.sources"/>
1956            <include name="com/ibm/icu/dev/test/stringprep/**/*.java"/>
1957        </javac>
1958
1959        <unjar src="${icu4j.testdata.jar}" dest="${module.tests.dir}">
1960            <patternset>
1961                <include name="**/*.spp"/>
1962                <include name="**/idna_rules.res"/>
1963            </patternset>
1964        </unjar>
1965
1966        <copy file="${icu4j.core-tests.dir}/src/com/ibm/icu/dev/data/IDNATestInput.txt"
1967                todir="${module.tests.dir}/com/ibm/icu/dev/data"/>
1968    </target>
1969
1970    <target name="publishToMavenRepo" depends="releaseVer">
1971        <!--
1972            Publish libraries to Maven repositories, snapshot or release depending on current
1973            version in pom.xml.
1974
1975            Prerequisites
1976
1977            1) Apache Maven Ant tasks - http://maven.apache.org/ant-tasks
1978            2) GnuPG
1979            3) Put build-local.properties to specify followings
1980
1981                maven-ant-tasks.jar = [location of maven ant tasks jar file]
1982                gpg.user = ICU Project
1983                gpg.passphrase = [passprase for ICU Project's PGP key]
1984
1985            4) Maven configuration file ~/.m2/settings.xml
1986                <settings>
1987                    <servers>
1988                        <server>
1989                            <id>icu4j-releases</id>
1990                            <username>[your JIRA/Nexus ID]</username>
1991                            <password>[your JIRA/Nexus password]</password>
1992                        </server>
1993                        <server>
1994                            <id>icu4j-snapshots</id>
1995                            <username>[your JIRA/Nexus ID]</username>
1996                            <password>[your JIRA/Nexus password]</password>
1997                        </server>
1998                    </servers>
1999                </settings>
2000
2001            Note: For now, charset.jar and localespi.jar are excluded.
2002        -->
2003        <fail message="Maven Ant Tasks are required to publish libraries. Set maven-ant-tasks.jar property. Maven Ant Tasks URL: http://maven.apache.org/ant-tasks/" unless="maven-ant-tasks.jar"/>
2004        <condition property="no_maven-ant-tasks">
2005            <available file="${maven-ant-tasks.jar}"/>
2006        </condition>
2007        <fail message="Maven Ant Tasks not found at ${maven-ant-tasks.jar}" unless="no_maven-ant-tasks"/>
2008
2009        <path id="maven-ant-tasks.classpath" path="${maven-ant-tasks.jar}"/>
2010        <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant"
2011            classpathref="maven-ant-tasks.classpath"/>
2012
2013        <xmlproperty file="pom.xml" prefix="pom.xml"/>
2014
2015        <!-- copy release files -->
2016        <property name="maven.release.dir" value="${release.dir}/maven"/>
2017
2018        <property name="maven.icu4j.jar.versioned.file" value="icu4j-${pom.xml.project.version}.jar"/>
2019        <property name="maven.icu4j-src.jar.versioned.file" value="icu4j-${pom.xml.project.version}-src.jar"/>
2020        <property name="maven.icu4jdocs.jar.file" value="icu4j-${pom.xml.project.version}-javadoc.jar"/>
2021
2022        <mkdir dir="${maven.release.dir}"/>
2023
2024        <copy file="${release.dir}/${icu4j.jar.versioned.file}" tofile="${maven.release.dir}/${maven.icu4j.jar.versioned.file}"/>
2025        <copy file="${release.dir}/${icu4j-src.jar.versioned.file}" tofile="${maven.release.dir}/${maven.icu4j-src.jar.versioned.file}"/>
2026        <copy file="${release.dir}/${icu4jdocs.jar.versioned.file}" tofile="${maven.release.dir}/${maven.icu4jdocs.jar.file}"/>
2027
2028        <copy file="pom.xml" todir="${maven.release.dir}"/>
2029
2030        <!-- sign release files-->
2031        <macrodef name="gpg">
2032            <attribute name="file"/>
2033            <sequential>
2034                <delete file="@{file}.asc" failonerror="false"/>
2035                <exec executable="gpg">
2036                    <arg value="-u"/>
2037                    <arg value="${gpg.user}"/>
2038                    <arg value="-ab"/>
2039                    <arg value="--passphrase"/>
2040                    <arg value="${gpg.passphrase}"/>
2041                    <arg value="-o"/>
2042                    <arg value="@{file}.asc"/>
2043                    <arg value="@{file}"/>
2044                </exec>
2045            </sequential>
2046        </macrodef>
2047
2048        <gpg file="${maven.release.dir}/${maven.icu4j.jar.versioned.file}"/>
2049        <gpg file="${maven.release.dir}/${maven.icu4j-src.jar.versioned.file}"/>
2050        <gpg file="${maven.release.dir}/${maven.icu4jdocs.jar.file}"/>
2051
2052        <gpg file="${maven.release.dir}/pom.xml"/>
2053
2054        <!-- deploy files to the repository -->
2055        <deploy xmlns="urn:maven-artifact-ant" file="${maven.release.dir}/${maven.icu4j.jar.versioned.file}">
2056            <pom file="${maven.release.dir}/pom.xml"/>
2057            <attach file="${maven.release.dir}/pom.xml.asc" type="pom.asc"/>
2058
2059            <attach file="${maven.release.dir}/${maven.icu4j.jar.versioned.file}.asc" type="jar.asc"/>
2060            <attach file="${maven.release.dir}/${maven.icu4j-src.jar.versioned.file}" classifier="sources"/>
2061            <attach file="${maven.release.dir}/${maven.icu4j-src.jar.versioned.file}.asc" classifier="sources" type="jar.asc"/>
2062            <attach file="${maven.release.dir}/${maven.icu4jdocs.jar.file}" classifier="javadoc"/>
2063            <attach file="${maven.release.dir}/${maven.icu4jdocs.jar.file}.asc" classifier="javadoc" type="jar.asc"/>
2064        </deploy>
2065
2066        <antcall target="_verify_config_for_release"/>
2067    </target>
2068
2069</project>
2070