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