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