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