blob: 9f3cc7f83929deead4defb1fad67be3a0dbc4466 [file] [log] [blame]
Fredrik Roubert7935b182014-11-18 20:21:54 -08001<!--
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02002* © 2016 and later: Unicode, Inc. and others.
3* License & terms of use: http://www.unicode.org/copyright.html#License
Fredrik Roubert7935b182014-11-18 20:21:54 -08004*******************************************************************************
Fredrik Roubert87255a32016-03-10 13:15:46 +01005* Copyright (C) 1997-2016, International Business Machines Corporation and *
Fredrik Roubert7935b182014-11-18 20:21:54 -08006* others. All Rights Reserved. *
7*******************************************************************************
8-->
9<project name="icu4j" default="jar" basedir="."
Fredrik Roubertfe77e722017-11-27 19:43:43 +010010 xmlns:ivy="antlib:org.apache.ivy.ant"
11 xmlns:jacoco="antlib:org.jacoco.ant">
Fredrik Roubert7935b182014-11-18 20:21:54 -080012
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}"/>
Fredrik Roubertfe77e722017-11-27 19:43:43 +010059
Nikita Iashchenkoac597cb2018-10-17 19:47:35 -070060 <property name="icu4j.api.doc.jdk.link" value="https://docs.oracle.com/javase/8/docs/api/"/>
Fredrik Roubertd1ab31b2017-04-18 21:38:54 +020061 <property name="icu4j.api.doc.copyright.footer" value="&lt;font size=-1&gt;Copyright &#x00A9; 2016 Unicode, Inc. and others.&lt;/font&gt;"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -080062
Fredrik Roubertfe77e722017-11-27 19:43:43 +010063 <!-- 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
Fredrik Roubert7935b182014-11-18 20:21:54 -080080 <!-- directories -->
81 <property name="release.dir" value="release"/>
82 <property name="doc.dir" value="doc"/>
Fredrik Roubertfe77e722017-11-27 19:43:43 +010083 <property name="maven.doc.base.dir" value="${out.dir}/mavendoc"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -080084 <property name="cldr.util.out.dir" value="${out.dir}/cldr_util"/>
85 <property name="cldr.release.dir" value="release_cldr"/>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +020086 <property name="external-jars" value="lib"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -080087
88 <!-- Java version check -->
Fredrik Roubertfe77e722017-11-27 19:43:43 +010089 <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
Fredrik Roubert1ac15792018-03-26 20:56:58 +0200101 <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
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100113 <condition property="is.java8.plus">
114 <or>
115 <isset property="is.java8"/>
116 <isset property="is.java9"/>
Fredrik Roubert1ac15792018-03-26 20:56:58 +0200117 <isset property="is.java10"/>
118 <isset property="is.java11"/>
119 <isset property="is.java12"/>
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100120 </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
Fredrik Roubert7935b182014-11-18 20:21:54 -0800130 <fail message="The JDK version is too old or unknown.">
131 <condition>
132 <not>
Victor Chang4578a1c2018-10-22 04:26:58 +0100133 <isset property="is.java7.plus"/>
Fredrik Roubert87255a32016-03-10 13:15:46 +0100134 </not>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800135 </condition>
136 </fail>
137
Fredrik Roubert7935b182014-11-18 20:21:54 -0800138
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"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800170 <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
187 <available file="eclipse-build" type="dir" property="eclipse-build.dir.present"/>
188 <antcall target="_clean.eclipse-build"/>
189 </target>
190
191 <target name="_clean.eclipse-build" if="eclipse-build.dir.present">
192 <ant dir="eclipse-build" target="clean" inheritAll="false"/>
193 </target>
194
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200195 <target name="ivy-clean">
196 <ivy:cleancache/>
197 </target>
198
199 <!-- Ivy Targets -->
Nikita Iashchenko41a5e662020-03-04 15:21:06 +0000200 <property name="ivy.install.version" value="2.5.0" />
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200201 <condition property="ivy.home" value="${env.IVY_HOME}">
202 <isset property="env.IVY_HOME" />
203 </condition>
204 <property name="ivy.home" value="${user.home}/.ant" />
205 <property name="ivy.jar.dir" value="${ivy.home}/lib" />
206 <property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar" />
207
208 <target name="download-ivy" unless="offline">
209 <mkdir dir="${ivy.jar.dir}"/>
210 <!-- download Ivy from web site so that it can be used even without any special installation -->
211 <get src="https://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar"
212 dest="${ivy.jar.file}" usetimestamp="true"/>
213 </target>
214
215 <target name="init-ivy" depends="download-ivy">
216 <!-- try to load ivy here from ivy home, in case the user has not already dropped
217 it into ant's lib dir (note that the latter copy will always take precedence).
218 We will not fail as long as local lib dir exists (it may be empty) and
219 ivy is in at least one of ant's lib dir or the local lib dir. -->
220 <path id="ivy.lib.path">
221 <fileset dir="${ivy.jar.dir}" includes="*.jar"/>
222 </path>
223 <taskdef resource="org/apache/ivy/ant/antlib.xml"
224 uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
225 </target>
226
227 <target name="test-init-junit-dependency" depends="init-ivy">
228 <ivy:retrieve/>
229 </target>
230
231 <target name="init" depends="test-init-junit-dependency"
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100232 description="Initialize the environment for build and test. May require internet access."/>
233
234 <target name="_classifytests">
235 <condition property="testaction.run">
236 <isset property="testclass"/>
237 </condition>
238 <condition property="testaction.class">
239 <and>
240 <isset property="testclass"/>
241 <not><isset property="testnames"/></not>
242 </and>
243 </condition>
244 <condition property="testaction.tests">
245 <and>
246 <isset property="testclass"/>
247 <isset property="testnames"/>
248 </and>
249 </condition>
250 <condition property="testaction.error">
251 <and>
252 <not><isset property="testclass"/></not>
253 <isset property="testnames"/>
254 </and>
255 </condition>
256 <condition property="testaction.all">
257 <and>
258 <not><isset property="testclass"/></not>
259 <not><isset property="testnames"/></not>
260 </and>
261 </condition>
262 </target>
263
264 <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.">
265 <sequential>
266 <delete dir="${junit.out.dir}/checkTest"/>
267 <mkdir dir="${junit.out.dir}/checkTest"/>
268
269 <junit printsummary="yes">
270 <classpath>
271 <path refid="junit.jars"/>
272 <path refid="junit.icu.jars"/>
273 </classpath>
274 <test name="${testclass}" todir="${junit.out.dir}/checkTest" outfile="checkTest" methods="${testnames}" if="testaction.tests">
275 <formatter type="xml"/>
276 </test>
277 <test name="${testclass}" todir="${junit.out.dir}/checkTest" outfile="checkTest" if="testaction.class">
278 <formatter type="xml"/>
279 </test>
280 </junit>
281
282 <junitreport todir="${junit.out.dir}/checkTest">
283 <fileset dir="${junit.out.dir}/checkTest">
284 <include name="checkTest.xml"/>
285 </fileset>
286 <report format="frames" todir="${junit.out.dir}/checkTest/html"/>
287 </junitreport>
288
289 <fail message="test failed: @{testdir}" if="@{failure-status}" />
290 </sequential>
291 </target>
292
293 <target name="runallTests" if="testaction.all">
294 <antcall target="allTests"/>
295 </target>
296
297 <target name="allTests" depends="check"/>
298
299 <target name="noTests" if="testaction.error">
300 <echo>Execute JUnit testing using -Dtestclass='class-name' -Dtestnames='test-name1>, test-name2, ...'</echo>
301 </target>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200302
303 <!-- Junit Targets -->
304 <macrodef name="icu-junit">
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100305 <attribute name="test-name"/>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200306 <attribute name="jvm-options" default=""/>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200307 <attribute name="classpath" default="junit.icu.jars"/>
308 <attribute name="failure-status" default="ignore"/>
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100309 <element name="junit-fileset"/>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200310 <element name="junit-parameters" optional="true"/>
311 <sequential>
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100312 <echo message="@{jvm-options}"/>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200313 <!--set the property - if it was set before it won't override-->
314 <property name="user-jvm-options" value=""/>
315 <property name="internal-jvm-options" value=""/>
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100316 <delete dir="${junit.out.dir}/@{test-name}"/>
317 <mkdir dir="${junit.out.dir}/@{test-name}"/>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200318
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100319 <junit fork="yes" forkmode="once" printsummary="yes" haltonfailure="no"
320 failureproperty="@{failure-status}" tempdir="${junit.out.dir}">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200321 <jvmarg value="-Xss4m"/>
322 <jvmarg value="-ea"/>
323 <jvmarg value="-Djava.awt.headless=true"/>
324 <jvmarg line="${user-jvm-options}"/>
325 <jvmarg line="@{jvm-options}"/>
326 <jvmarg line="${internal-jvm-options}"/>
327 <junit-parameters/>
328 <classpath>
329 <path refid="junit.jars"/>
330 <path refid="@{classpath}"/>
331 </classpath>
332 <formatter type="plain"/>
333 <formatter type="xml"/>
334
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100335 <batchtest todir="${junit.out.dir}/@{test-name}">
336 <junit-fileset/>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200337 </batchtest>
338 </junit>
339
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100340 <junitreport tofile="@{test-name}-TestSuite.xml" todir="${junit.out.dir}/@{test-name}">
341 <fileset dir="${junit.out.dir}/@{test-name}">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200342 <include name="*.xml"/>
343 </fileset>
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100344 <report format="frames" todir="${junit.out.dir}/@{test-name}/html"/>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200345 </junitreport>
346
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100347 <fail message="test failed: @{test-name}" if="@{failure-status}" />
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200348
349 </sequential>
350 </macrodef>
351
352 <property name="junit.out.dir" value="${out.dir}/junit-results"/>
353 <property name="junit.core.jar" value="${external-jars}/junit-4.12.jar"/>
354 <property name="junit.hamcrest.jar" value="${external-jars}/hamcrest-core-1.3.jar"/>
355 <property name="junit.junitparams.jar" value="${external-jars}/JUnitParams-1.0.5.jar"/>
356 <path id="junit.jars">
357 <pathelement path="${junit.core.jar}"/>
358 <pathelement path="${junit.hamcrest.jar}"/>
359 <pathelement path="${junit.junitparams.jar}"/>
360 </path>
361
362 <path id="junit.icu.jars">
363 <pathelement location="${icu4j.core.jar}"/>
364 <pathelement location="${icu4j.collate.jar}"/>
365 <pathelement location="${icu4j.charset.jar}"/>
366 <pathelement location="${icu4j.currdata.jar}"/>
367 <pathelement location="${icu4j.langdata.jar}"/>
368 <pathelement location="${icu4j.regiondata.jar}"/>
369 <pathelement location="${icu4j.translit.jar}"/>
370 <pathelement location="${icu4j.test-framework.jar}"/>
Nikita Iashchenko4c0e2862019-11-05 16:38:00 +0000371 <pathelement location="${icu4j.tools.jar}"/>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200372 <pathelement location="${icu4j.core-tests.jar}"/>
373 <pathelement location="${icu4j.collate-tests.jar}"/>
374 <pathelement location="${icu4j.charset-tests.jar}"/>
375 <pathelement location="${icu4j.translit-tests.jar}"/>
376 <pathelement location="${icu4j.localespi-tests.jar}"/>
377 <pathelement location="${icu4j.packaging-tests.jar}"/>
378 <pathelement location="${icu4j.regiondata.jar}"/>
379 </path>
380
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100381 <path id="junit.icu.release.jars">
382 <pathelement location="${icu4j.jar.file}"/>
383 <pathelement location="${icu4j.charset.jar}"/>
384 <pathelement location="${icu4jtests.jar.file}"/>
385 </path>
386
387 <path id="junit.icu.localespi-tests.jars">
388 <pathelement location="${icu4j.test-framework.jar}"/>
389 <pathelement location="${icu4j.localespi-tests.jar}"/>
390 </path>
391
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200392 <!--Class names that will be included/excluded as tests-->
393 <patternset id="test-classes-patternset">
394 <include name="**/*Test*"/>
395 <exclude name="**/*Fmwk*"/>
396 <exclude name="**/*TestUtility*"/>
Fredrik Roubertd1ab31b2017-04-18 21:38:54 +0200397 <exclude name="**/*TestHelper*"/>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200398 <exclude name="**/*TestCase*"/>
399 <exclude name="**/*TestData*"/>
400 <exclude name="**/*TestSample*"/>
401 <exclude name="**/*$*.class"/>
402 <exclude name="**/data/**"/>
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100403 <exclude name="com/ibm/icu/dev/test/*"/>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200404 </patternset>
405
406 <!--Class names that will be included/excluded as tests for time zone check-->
407 <patternset id="timeZoneCheck-patternset">
408 <include name="**/TimeZoneFormatTest*"/>
409 <exclude name="**/*$*.class"/>
410 </patternset>
411
412 <!--Class names that will be included/excluded as tests for packaging check-->
413 <patternset id="packagingCheck-patternset">
414 <include name="**/TestLocaleNamePackaging*"/>
415 <exclude name="**/*$*.class"/>
416 </patternset>
417
418 <!--Class names that will be included/excluded as tests for locale SPI check-->
419 <patternset id="localespiCheck-patternset">
420 <include name="**/*Test*"/>
421 <exclude name="com/ibm/icu/dev/test/localespi/TestUtil.*"/>
422 <exclude name="**/*$*.class"/>
423 </patternset>
424
Fredrik Roubert7935b182014-11-18 20:21:54 -0800425 <!-- meta build targets -->
426 <target name="all" depends="info, main, tests, build-tools, tools, demos, samples, perf-tests, jar, docs" description="Build all primary targets"/>
427 <target name="main" depends="info, core, collate, charset, currdata, langdata, regiondata, translit, localespi" description="Build ICU4J runtime library classes"/>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200428 <target name="tests" depends="info, core-tests, charset-tests, collate-tests, packaging-tests, translit-tests, localespi-tests" description="Build ICU4J test classes"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800429
430 <target name="secure" depends="icu4jJar" description="(Deprecated)Build ICU4J API and test classes for running the ICU4J test suite with Java security manager enabled"/>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200431
Fredrik Roubert7935b182014-11-18 20:21:54 -0800432 <!-- Check to see if JVM_OPTIONS enviroment variable is set. This can be use to set the heap size. -->
433 <property name="env.JVM_OPTIONS" value=""/>
434 <property name="jvm_options" value="${env.JVM_OPTIONS}"/>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200435
436 <target name="_check">
Fredrik Roubertd1ab31b2017-04-18 21:38:54 +0200437 <parallel>
438 <antcall target="_charsetCheck"/>
439 <antcall target="_collateCheck"/>
440 <antcall target="_coreCheck"/>
441 <antcall target="_translitCheck"/>
442 </parallel>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800443 </target>
444
445 <target name="exhaustiveCheck" description="Run the standard ICU4J test suite in exhaustive mode">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200446 <antcall target="check">
447 <param name="internal-jvm-options" value="-DICU.exhaustive=10"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800448 </antcall>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200449 <fail message="test failed" if="icu-junit-failure" />
450 </target>
451
452 <target name="check" depends="main, tests" description="Run the standard ICU4J test suite">
453 <antcall target="_check"/>
454 <fail message="test failed" if="icu-junit-failure" />
455 </target>
456
457 <target name="runTest" description="Run the standard ICU4J test suite without calling any other build targets">
458 <antcall target="_check"/>
459 <fail message="test failed" if="icu-junit-failure" />
Fredrik Roubert7935b182014-11-18 20:21:54 -0800460 </target>
461
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100462 <target name="releaseJarCheck" depends="jar, icu4jtestsJar" description="Run the ICU4J test suite with ICU4J release jar files">
463 <icu-junit test-name="releaseJarCheck"
464 classpath="junit.icu.release.jars"
465 failure-status="icu-junit-failure">
466 <junit-fileset>
467 <zipfileset src="${icu4jtests.jar.file}">
468 <patternset refid="test-classes-patternset"/>
469 </zipfileset>
470 </junit-fileset>
471 </icu-junit>
472 <fail message="test failed - icu4j/icu4j-charset" if="icu-junit-failure" />
473
474 <property name="test.java.ext.dir" value="${out.dir}/localespi-ext"/>
475 <delete dir="${test.java.ext.dir}"/>
476 <mkdir dir="${test.java.ext.dir}"/>
477 <copy file="${icu4j-localespi.jar.file}" todir="${test.java.ext.dir}"/>
478 <copy file="${icu4j.jar.file}" todir="${test.java.ext.dir}"/>
479
480 <icu-junit test-name="releaseJarCheck-localespi"
481 classpath="junit.icu.localespi-tests.jars"
482 jvm-options="-Djava.ext.dirs=${test.java.ext.dir}${path.separator}${java.ext.dirs}"
483 failure-status="icu-junit-failure">
484 <junit-fileset>
485 <fileset dir="${icu4j.localespi-tests.dir}/${bin.dir}">
486 <patternset refid="localespiCheck-patternset"/>
487 </fileset>
488 </junit-fileset>
489 </icu-junit>
490 <fail message="test failed - icu4j-localespi" if="icu-junit-failure" />
491 </target>
492
493 <target name="timeZoneCheck" depends="main, tests" description="Run the complete test for TimeZoneRoundTripAll">
494 <icu-junit test-name="timeZoneCheck"
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200495 jvm-options="-DTimeZoneRoundTripAll=true"
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100496 failure-status="icu-junit-failure">
497 <junit-fileset>
498 <fileset dir="${icu4j.core-tests.dir}/${bin.dir}">
499 <patternset refid="timeZoneCheck-patternset"/>
500 </fileset>
501 </junit-fileset>
502 </icu-junit>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200503 <fail message="test failed" if="icu-junit-failure" />
Fredrik Roubert7935b182014-11-18 20:21:54 -0800504 </target>
505
506 <target name="jdktzCheck" description="Run the standard ICU4J test suite with JDK TimeZone">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200507 <antcall target="check">
508 <param name="internal-jvm-options" value="-Dcom.ibm.icu.util.TimeZone.DefaultTimeZoneType=JDK"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800509 </antcall>
510 </target>
511
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200512 <path id="junit.icu.jars.PackagingCheckNoLangData">
513 <pathelement location="${icu4j.core.jar}"/>
514 <pathelement location="${icu4j.charset.jar}"/>
515 <pathelement location="${icu4j.test-framework.jar}"/>
516 <pathelement location="${icu4j.packaging-tests.jar}"/>
517 <pathelement location="${icu4j.regiondata.jar}"/>
518 </path>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800519
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200520 <path id="junit.icu.jars.PackagingCheckNoRegionData">
521 <pathelement location="${icu4j.core.jar}"/>
522 <pathelement location="${icu4j.charset.jar}"/>
523 <pathelement location="${icu4j.test-framework.jar}"/>
524 <pathelement location="${icu4j.packaging-tests.jar}"/>
525 <pathelement location="${icu4j.langdata.jar}"/>
526 </path>
527
528 <path id="junit.icu.jars.PackagingCheckNoLangNorRegionData">
529 <pathelement location="${icu4j.core.jar}"/>
530 <pathelement location="${icu4j.charset.jar}"/>
531 <pathelement location="${icu4j.test-framework.jar}"/>
532 <pathelement location="${icu4j.packaging-tests.jar}"/>
533 </path>
534
535 <target name="_packagingCheckNoLangData">
536 <!-- region data but no language data -->
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100537 <icu-junit test-name="packaging-NoLangData"
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200538 classpath="junit.icu.jars.PackagingCheckNoLangData"
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100539 failure-status="icu-junit-failure">
540 <junit-fileset>
541 <fileset dir="${icu4j.packaging-tests.dir}/${bin.dir}">
542 <patternset refid="packagingCheck-patternset"/>
543 </fileset>
544 </junit-fileset>
545 </icu-junit>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800546 </target>
547
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200548 <target name="_packagingCheckNoRegionData">
549 <!-- language data but no region data -->
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100550 <icu-junit test-name="packaging-NoRegionData"
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200551 classpath="junit.icu.jars.PackagingCheckNoRegionData"
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100552 failure-status="icu-junit-failure">
553 <junit-fileset>
554 <fileset dir="${icu4j.packaging-tests.dir}/${bin.dir}">
555 <patternset refid="packagingCheck-patternset"/>
556 </fileset>
557 </junit-fileset>
558 </icu-junit>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800559 </target>
560
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200561 <target name="_packagingCheckNoLangNorRegionData">
562 <!-- neither region nor language data -->
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100563 <icu-junit test-name="packaging-NoLangNorRegionData"
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200564 classpath="junit.icu.jars.PackagingCheckNoLangNorRegionData"
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100565 failure-status="icu-junit-failure">
566 <junit-fileset>
567 <fileset dir="${icu4j.packaging-tests.dir}/${bin.dir}">
568 <patternset refid="packagingCheck-patternset"/>
569 </fileset>
570 </junit-fileset>
571 </icu-junit>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800572 </target>
573
Nikita Iashchenko4c0e2862019-11-05 16:38:00 +0000574 <target name="packagingCheck" depends="info, core, langdata, regiondata, packaging-tests" description="Run packaging tests">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200575 <antcall target="_packagingCheckNoLangData"/>
576 <antcall target="_packagingCheckNoRegionData"/>
577 <antcall target="_packagingCheckNoLangNorRegionData"/>
578 <fail message="test failed" if="icu-junit-failure" />
579 </target>
580
581 <target name="_coreCheck">
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100582 <icu-junit test-name="core" failure-status="icu-junit-failure">
583 <junit-fileset>
584 <fileset dir="${icu4j.core-tests.dir}/${bin.dir}">
585 <patternset refid="test-classes-patternset"/>
586 </fileset>
587 </junit-fileset>
588 </icu-junit>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800589 </target>
590
591 <target name="coreCheck" depends="info, core, currdata, langdata, regiondata, core-tests" description="Run only the core tests">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200592 <antcall target="_coreCheck"/>
593 <fail message="test failed" if="icu-junit-failure" />
594 </target>
595
596 <target name="_charsetCheck">
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100597 <icu-junit test-name="charset" failure-status="icu-junit-failure">
598 <junit-fileset>
599 <fileset dir="${icu4j.charset-tests.dir}/${bin.dir}">
600 <patternset refid="test-classes-patternset"/>
601 </fileset>
602 </junit-fileset>
603 </icu-junit>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200604 </target>
605
606 <target name="charsetCheck" depends="info, core, charset, currdata, langdata, regiondata, core-tests, charset-tests" description="Run only the charset tests">
607 <antcall target="_charsetCheck"/>
608 <fail message="test failed" if="icu-junit-failure" />
609 </target>
610
611 <target name="_collateCheck">
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100612 <icu-junit test-name="collate" failure-status="icu-junit-failure">
613 <junit-fileset>
614 <fileset dir="${icu4j.collate-tests.dir}/${bin.dir}">
615 <patternset refid="test-classes-patternset"/>
616 </fileset>
617 </junit-fileset>
618 </icu-junit>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800619 </target>
620
621 <target name="collateCheck" depends="info, core, collate, currdata, langdata, regiondata, core-tests, collate-tests" description="Run only the collation tests">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200622 <antcall target="_collateCheck"/>
623 <fail message="test failed" if="icu-junit-failure" />
624 </target>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800625
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200626 <target name="_translitCheck">
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100627 <icu-junit test-name="translit" failure-status="icu-junit-failure">
628 <junit-fileset>
629 <fileset dir="${icu4j.translit-tests.dir}/${bin.dir}">
630 <patternset refid="test-classes-patternset"/>
631 </fileset>
632 </junit-fileset>
633 </icu-junit>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800634 </target>
635
636 <target name="translitCheck" depends="info, core, translit, translit-tests" description="Run the ICU4J Translit test suite">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200637 <antcall target="_translitCheck"/>
638 <fail message="test failed" if="icu-junit-failure" />
Fredrik Roubert7935b182014-11-18 20:21:54 -0800639 </target>
640
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200641 <target name="_localespiCheck">
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100642 <icu-junit test-name="localespi"
643 classpath="junit.icu.localespi-tests.jars"
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200644 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}"
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100645 failure-status="icu-junit-failure">
646 <junit-fileset>
647 <fileset dir="${icu4j.localespi-tests.dir}/${bin.dir}">
648 <patternset refid="localespiCheck-patternset"/>
649 </fileset>
650 </junit-fileset>
651 </icu-junit>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800652 </target>
653
Victor Chang4578a1c2018-10-22 04:26:58 +0100654 <target name="localespiCheck" depends="info, localespi, localespi-tests" description="Run the ICU4J Locale SPI test suite">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200655 <antcall target="_localespiCheck"/>
656 <fail message="test failed" if="icu-junit-failure" />
Fredrik Roubert7935b182014-11-18 20:21:54 -0800657 </target>
658
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100659 <target name="secureCheck" depends="jar, icu4jtestsJar" description="Run the ICU4J test suite with Java security manager enabled">
660 <icu-junit test-name="secureCheck"
661 classpath="junit.icu.release.jars"
662 jvm-options="-Djava.security.manager -Djava.security.policy=${user.dir}/${shared.dir}/data/security.policy"
663 failure-status="icu-junit-failure">
664 <junit-fileset>
665 <zipfileset src="${icu4jtests.jar.file}">
666 <patternset refid="test-classes-patternset"/>
667 </zipfileset>
668 </junit-fileset>
669 </icu-junit>
670 <fail message="test failed" if="icu-junit-failure" />
Fredrik Roubert7935b182014-11-18 20:21:54 -0800671 </target>
672
673 <!-- jar targets -->
674 <target name="jar" depends="icu4jJar, charset, localespi" description="Build ICU4J runtime library jar files">
675 <copy file="${icu4j.charset.jar}" tofile="${icu4j-charset.jar.file}"/>
676 <copy file="${icu4j.localespi.jar}" tofile="${icu4j-localespi.jar.file}" failonerror="false"/>
677 </target>
678
679 <target name="icu4jJar" depends="info, core, collate, currdata, langdata, regiondata, translit" description="Build ICU4J all-in-one core jar">
680 <mkdir dir="${out.dir}"/>
681
682 <!-- manifest -->
683 <copy file="manifest.stub" todir="${out.dir}">
684 <filterset>
685 <filter token="SPECVERSION" value="${jar.spec.version}"/>
686 <filter token="IMPLVERSION" value="${jar.impl.version}"/>
687 <filter token="COPYRIGHT" value="${jar.copyright.info}"/>
688 <filter token="EXECENV" value="${jar.exec.env}"/>
689 </filterset>
690 </copy>
691
692 <!-- jar -->
693 <jar jarfile="${icu4j.jar.file}"
694 compress="true"
695 manifest="${out.dir}/manifest.stub">
696 <fileset dir="${icu4j.core.dir}/${bin.dir}" includes="**/*"/>
697 <fileset dir="${icu4j.collate.dir}/${bin.dir}" includes="**/*"/>
698 <fileset dir="${icu4j.currdata.dir}/${bin.dir}" includes="**/*"/>
699 <fileset dir="${icu4j.langdata.dir}/${bin.dir}" includes="**/*"/>
700 <fileset dir="${icu4j.regiondata.dir}/${bin.dir}" includes="**/*"/>
701 <fileset dir="${icu4j.translit.dir}/${bin.dir}" includes="**/*"/>
702 <fileset dir="${shared.dir}/licenses">
Fredrik Roubert87255a32016-03-10 13:15:46 +0100703 <include name="LICENSE"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800704 </fileset>
705 </jar>
706 </target>
707
708 <target name="icu4jSrcJar" description="Build icu4j-src.jar">
709 <jar jarfile="${icu4j-src.jar.file}"
710 compress="true">
711 <fileset dir="${icu4j.core.dir}/${src.dir}" includes="**/*.java"/>
712 <fileset dir="${icu4j.collate.dir}/${src.dir}" includes="**/*.java"/>
713 <fileset dir="${icu4j.currdata.dir}/${src.dir}" includes="**/*.java"/>
714 <fileset dir="${icu4j.langdata.dir}/${src.dir}" includes="**/*.java"/>
715 <fileset dir="${icu4j.regiondata.dir}/${src.dir}" includes="**/*.java"/>
716 <fileset dir="${icu4j.translit.dir}/${src.dir}" includes="**/*.java"/>
717 <fileset dir="${shared.dir}/licenses">
Fredrik Roubert87255a32016-03-10 13:15:46 +0100718 <include name="LICENSE"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800719 </fileset>
720 </jar>
721 </target>
722
Nikita Iashchenko4c0e2862019-11-05 16:38:00 +0000723 <target name="icu4jtestsJar" depends="info, tests, tools" description="Build ICU4J all-in-one test jar">
Fredrik Roubert7935b182014-11-18 20:21:54 -0800724 <jar jarfile="${icu4jtests.jar.file}"
725 compress="true">
726 <fileset dir="${icu4j.test-framework.dir}/${bin.dir}" includes="**/*"/>
727 <fileset dir="${icu4j.core-tests.dir}/${bin.dir}" includes="**/*"/>
728 <fileset dir="${icu4j.collate-tests.dir}/${bin.dir}" includes="**/*"/>
729 <fileset dir="${icu4j.translit-tests.dir}/${bin.dir}" includes="**/*"/>
730 <fileset dir="${icu4j.charset-tests.dir}/${bin.dir}" includes="**/*"/>
Nikita Iashchenko4c0e2862019-11-05 16:38:00 +0000731 <fileset dir="${icu4j.tools.dir}/${bin.dir}" includes="com/ibm/icu/dev/tool/locale/**"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800732 </jar>
733 </target>
734
735 <target name="jarDemos" depends="icu4jJar, demos" description="Build ICU4J demo jar file">
736 <copy file="${icu4j.demos.jar}" tofile="${icu4jdemos.jar.file}"/>
737 </target>
738
739
740 <!-- release targets -->
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200741 <target name="_check_config_for_release" depends="_checkJCite">
Fredrik Roubertf716bda2015-03-18 22:28:34 +0100742 <condition property="release.build.config.ok">
743 <and>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200744 <isset property="is.java8"/>
Victor Chang4578a1c2018-10-22 04:26:58 +0100745 <isset property="java7.bootclasspath"/>
Fredrik Roubertf716bda2015-03-18 22:28:34 +0100746 <isset property="jcite.libs"/>
747 </and>
748 </condition>
749 </target>
750
751 <target name="_verify_config_for_release" depends="_check_config_for_release" unless="release.build.config.ok">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +0200752 <condition property="disp.is.java8" value="${java.version}" else="${java.version} - Must be 1.8!">
753 <isset property="is.java8"/>
Fredrik Roubertbd1cbb62015-09-28 21:14:09 +0200754 </condition>
Victor Chang4578a1c2018-10-22 04:26:58 +0100755 <condition property="disp.java7.bootclasspath" value="${java7.bootclasspath}" else="Not Defined!">
756 <isset property="java7.bootclasspath"/>
Fredrik Roubertf716bda2015-03-18 22:28:34 +0100757 </condition>
758 <condition property="disp.jcite.libs" value="${jcite.libs}" else="Not Defined!">
759 <isset property="jcite.libs"/>
760 </condition>
761
762 <echo message="################################################################"/>
763 <echo message="[WARNING] Insufficient Build Configuration for ICU4J Release"/>
Victor Chang4578a1c2018-10-22 04:26:58 +0100764 <echo message="JDK 8 Tools: ${disp.is.java8}"/>
765 <echo message="JRE 7 System Library Path: ${disp.java7.bootclasspath}"/>
Fredrik Roubertf716bda2015-03-18 22:28:34 +0100766 <echo message="JCite Library Path: ${disp.jcite.libs}"/>
767 <echo message="################################################################"/>
768 </target>
769
Fredrik Roubertfe77e722017-11-27 19:43:43 +0100770 <target name="_final_release_check" depends="_verify_config_for_release">
771 <fail message="Insufficient Build Configuration for ICU4J Release" unless="release.build.config.ok"/>
772
773 <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"/>
774 <condition property="no_maven-ant-tasks">
775 <available file="${maven-ant-tasks.jar}"/>
776 </condition>
777 <fail message="Maven Ant Tasks not found at ${maven-ant-tasks.jar}" unless="no_maven-ant-tasks"/>
778 </target>
779
780 <!--
781 The ant target releaseFinal is used for ICU official release.
782 This target builds ICU4J library jars, source jars and API document jars.
783 Also, this target publishes ICU4J artifacts to OSSRH staging repository.
784
785 Prerequisites
786
787 1) Apache Maven Ant tasks - http://maven.apache.org/ant-tasks
788
789 Note: Apache Maven Ant tasks was already deprecated. You can still
790 download the latest version from Maven Central
791 http://central.maven.org/maven2/org/apache/maven/maven-ant-tasks/2.1.3/maven-ant-tasks-2.1.3.jar
792
793 TODO: Because mavne-ant-tasks was already deprecated and no longer maintained,
794 we should look for alternative solution.
795
796 2) GnuPG
797
798 3) Put build-local.properties to specify followings
799
800 maven-ant-tasks.jar = [location of maven ant tasks jar file]
801 gpg.user = ICU Project
802
803 4) Maven configuration file ~/.m2/settings.xml
804 <settings>
805 <servers>
806 <server>
807 <id>icu4j-releases</id>
808 <username>[oss.sonatype.org Nexus account ID]</username>
809 <password>[oss.sonatype.org Nexus account password]</password>
810 </server>
811 <server>
812 <id>icu4j-snapshots</id>
813 <username>[oss.sonatype.org Nexus account ID]</username>
814 <password>[oss.sonatype.org Nexus account password]</password>
815 </server>
816 </servers>
817 </settings>
818 -->
819 <target name="releaseFinal" depends="info, _final_release_check, releaseVer, docsMaven"
820 description="Build all ICU4J release files for distribution and upload them to the OSSRH staging repository">
821
822 <property name="maven.pom.dir" value="maven"/>
823 <property name="maven.icu4j.release.dir" value="${release.dir}/maven/icu4j"/>
824 <property name="maven.charset.release.dir" value="${release.dir}/maven/icu4j-charset"/>
825 <property name="maven.localespi.release.dir" value="${release.dir}/maven/icu4j-localespi"/>
826
827 <property name="maven.icu4j.jar.file" value="icu4j-${maven.pom.ver}.jar"/>
828 <property name="maven.icu4j.src.jar.file" value="icu4j-${maven.pom.ver}-sources.jar"/>
829 <property name="maven.icu4j.doc.jar.file" value="icu4j-${maven.pom.ver}-javadoc.jar"/>
830
831 <property name="maven.charset.jar.file" value="icu4j-charset-${maven.pom.ver}.jar"/>
832 <property name="maven.charset.src.jar.file" value="icu4j-charset-${maven.pom.ver}-sources.jar"/>
833 <property name="maven.charset.doc.jar.file" value="icu4j-charset-${maven.pom.ver}-javadoc.jar"/>
834
835 <property name="maven.localespi.jar.file" value="icu4j-localespi-${maven.pom.ver}.jar"/>
836 <property name="maven.localespi.src.jar.file" value="icu4j-localespi-${maven.pom.ver}-sources.jar"/>
837 <property name="maven.localespi.doc.jar.file" value="icu4j-localespi-${maven.pom.ver}-javadoc.jar"/>
838
839
840 <delete dir="${release.dir}/maven"/>
841 <mkdir dir="${maven.icu4j.release.dir}"/>
842 <mkdir dir="${maven.charset.release.dir}"/>
843 <mkdir dir="${maven.localespi.release.dir}"/>
844
845
846 <!-- copy pom.xml with version -->
847 <copy file="${maven.pom.dir}/icu4j/pom.xml" todir="${maven.icu4j.release.dir}">
848 <filterset>
849 <filter token="POMVERSION" value="${maven.pom.ver}"/>
850 </filterset>
851 </copy>
852 <copy file="${maven.pom.dir}/icu4j-charset/pom.xml" todir="${maven.charset.release.dir}">
853 <filterset>
854 <filter token="POMVERSION" value="${maven.pom.ver}"/>
855 </filterset>
856 </copy>
857 <copy file="${maven.pom.dir}/icu4j-localespi/pom.xml" todir="${maven.localespi.release.dir}">
858 <filterset>
859 <filter token="POMVERSION" value="${maven.pom.ver}"/>
860 </filterset>
861 </copy>
862
863 <!-- copy ICU release binaries and source archive to the maven release directory -->
864 <copy file="${release.dir}/${icu4j.jar.versioned.file}"
865 tofile="${maven.icu4j.release.dir}/${maven.icu4j.jar.file}"/>
866 <copy file="${release.dir}/${icu4j-charset.jar.versioned.file}"
867 tofile="${maven.charset.release.dir}/${maven.charset.jar.file}"/>
868 <copy file="${release.dir}/${icu4j-localespi.jar.versioned.file}"
869 tofile="${maven.localespi.release.dir}/${maven.localespi.jar.file}"/>
870
871 <copy file="${release.dir}/${icu4j-src.jar.versioned.file}"
872 tofile="${maven.icu4j.release.dir}/${maven.icu4j.src.jar.file}"/>
873 <copy file="${release.dir}/${icu4j-charset-src.jar.versioned.file}"
874 tofile="${maven.charset.release.dir}/${maven.charset.src.jar.file}"/>
875 <copy file="${release.dir}/${icu4j-localespi-src.jar.versioned.file}"
876 tofile="${maven.localespi.release.dir}/${maven.localespi.src.jar.file}"/>
877
878 <!-- javadoc jar for maven release -->
879 <jar jarfile="${maven.icu4j.release.dir}/${maven.icu4j.doc.jar.file}"
880 compress="true"
881 basedir="${maven.doc.base.dir}/icu4j"/>
882 <jar jarfile="${maven.charset.release.dir}/${maven.charset.doc.jar.file}"
883 compress="true"
884 basedir="${maven.doc.base.dir}/charset"/>
885 <jar jarfile="${maven.localespi.release.dir}/${maven.localespi.doc.jar.file}"
886 compress="true"
887 basedir="${maven.doc.base.dir}/localespi"/>
888
889 <!-- sign release files-->
890 <macrodef name="gpg">
891 <attribute name="file"/>
892 <sequential>
893 <delete file="@{file}.asc" failonerror="false"/>
894 <exec executable="gpg">
895 <arg value="-u"/>
896 <arg value="${gpg.user}"/>
897 <arg value="-ab"/>
898 <arg value="-o"/>
899 <arg value="@{file}.asc"/>
900 <arg value="@{file}"/>
901 </exec>
902 </sequential>
903 </macrodef>
904
905 <gpg file="${maven.icu4j.release.dir}/pom.xml"/>
906 <gpg file="${maven.icu4j.release.dir}/${maven.icu4j.jar.file}"/>
907 <gpg file="${maven.icu4j.release.dir}/${maven.icu4j.src.jar.file}"/>
908 <gpg file="${maven.icu4j.release.dir}/${maven.icu4j.doc.jar.file}"/>
909
910 <gpg file="${maven.charset.release.dir}/pom.xml"/>
911 <gpg file="${maven.charset.release.dir}/${maven.charset.jar.file}"/>
912 <gpg file="${maven.charset.release.dir}/${maven.charset.src.jar.file}"/>
913 <gpg file="${maven.charset.release.dir}/${maven.charset.doc.jar.file}"/>
914
915 <gpg file="${maven.localespi.release.dir}/pom.xml"/>
916 <gpg file="${maven.localespi.release.dir}/${maven.localespi.jar.file}"/>
917 <gpg file="${maven.localespi.release.dir}/${maven.localespi.src.jar.file}"/>
918 <gpg file="${maven.localespi.release.dir}/${maven.localespi.doc.jar.file}"/>
919
920 <!-- deploy ICU4J artifacts to the OSSRH staging repository -->
921 <path id="maven-ant-tasks.classpath" path="${maven-ant-tasks.jar}"/>
922 <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant"
923 classpathref="maven-ant-tasks.classpath"/>
924
925 <deploy xmlns="urn:maven-artifact-ant" file="${maven.icu4j.release.dir}/${maven.icu4j.jar.file}">
926 <pom file="${maven.icu4j.release.dir}/pom.xml"/>
927 <attach file="${maven.icu4j.release.dir}/pom.xml.asc" type="pom.asc"/>
928 <attach file="${maven.icu4j.release.dir}/${maven.icu4j.jar.file}.asc" type="jar.asc"/>
929 <attach file="${maven.icu4j.release.dir}/${maven.icu4j.src.jar.file}" classifier="sources"/>
930 <attach file="${maven.icu4j.release.dir}/${maven.icu4j.src.jar.file}.asc" classifier="sources" type="jar.asc"/>
931 <attach file="${maven.icu4j.release.dir}/${maven.icu4j.doc.jar.file}" classifier="javadoc"/>
932 <attach file="${maven.icu4j.release.dir}/${maven.icu4j.doc.jar.file}.asc" classifier="javadoc" type="jar.asc"/>
933 </deploy>
934
935 <deploy xmlns="urn:maven-artifact-ant" file="${maven.charset.release.dir}/${maven.charset.jar.file}">
936 <pom file="${maven.charset.release.dir}/pom.xml"/>
937 <attach file="${maven.charset.release.dir}/pom.xml.asc" type="pom.asc"/>
938 <attach file="${maven.charset.release.dir}/${maven.charset.jar.file}.asc" type="jar.asc"/>
939 <attach file="${maven.charset.release.dir}/${maven.charset.src.jar.file}" classifier="sources"/>
940 <attach file="${maven.charset.release.dir}/${maven.charset.src.jar.file}.asc" classifier="sources" type="jar.asc"/>
941 <attach file="${maven.charset.release.dir}/${maven.charset.doc.jar.file}" classifier="javadoc"/>
942 <attach file="${maven.charset.release.dir}/${maven.charset.doc.jar.file}.asc" classifier="javadoc" type="jar.asc"/>
943 </deploy>
944
945 <deploy xmlns="urn:maven-artifact-ant" file="${maven.localespi.release.dir}/${maven.localespi.jar.file}">
946 <pom file="${maven.localespi.release.dir}/pom.xml"/>
947 <attach file="${maven.localespi.release.dir}/pom.xml.asc" type="pom.asc"/>
948 <attach file="${maven.localespi.release.dir}/${maven.localespi.jar.file}.asc" type="jar.asc"/>
949 <attach file="${maven.localespi.release.dir}/${maven.localespi.src.jar.file}" classifier="sources"/>
950 <attach file="${maven.localespi.release.dir}/${maven.localespi.src.jar.file}.asc" classifier="sources" type="jar.asc"/>
951 <attach file="${maven.localespi.release.dir}/${maven.localespi.doc.jar.file}" classifier="javadoc"/>
952 <attach file="${maven.localespi.release.dir}/${maven.localespi.doc.jar.file}.asc" classifier="javadoc" type="jar.asc"/>
953 </deploy>
954 </target>
955
956 <target name="releaseVer" depends="info, releaseBinaries, releaseJarCheck, releaseSrcJars, releaseDocs, releaseSourceArchiveTgz"
Fredrik Roubert7935b182014-11-18 20:21:54 -0800957 description="Build all ICU4J release files for distribution with versioned file names">
958 <!-- binaries -->
959 <move file="${release.dir}/${icu4j.jar.file}" tofile="${release.dir}/${icu4j.jar.versioned.file}"/>
960 <move file="${release.dir}/${icu4j-charset.jar.file}" tofile="${release.dir}/${icu4j-charset.jar.versioned.file}"/>
961 <move file="${release.dir}/${icu4j-localespi.jar.file}" tofile="${release.dir}/${icu4j-localespi.jar.versioned.file}"/>
962
963 <!-- source jars -->
964 <move file="${release.dir}/${icu4j-src.jar.file}" tofile="${release.dir}/${icu4j-src.jar.versioned.file}"/>
965 <move file="${release.dir}/${icu4j-charset-src.jar.file}" tofile="${release.dir}/${icu4j-charset-src.jar.versioned.file}"/>
966 <move file="${release.dir}/${icu4j-localespi-src.jar.file}" tofile="${release.dir}/${icu4j-localespi-src.jar.versioned.file}"/>
967
968 <!-- docs -->
969 <move file="${release.dir}/${icu4jdocs.jar.file}" tofile="${release.dir}/${icu4jdocs.jar.versioned.file}"/>
970
971 <!-- package archive -->
972 <move file="${release.dir}/${icu4jsrc.tgz.file}" tofile="${release.dir}/${icu4jsrc.tgz.versioned.file}"/>
973
974 <!-- md5 checksum file -->
975 <mkdir dir="${out.dir}/checksum"/>
976 <delete dir="${out.dir}/checksum" includes="**/*"/>
977
978 <checksum todir="${out.dir}/checksum" format="MD5SUM">
979 <fileset dir="${release.dir}">
980 <include name="*.jar"/>
981 <include name="*.tgz"/>
982 </fileset>
983 </checksum>
984
985 <concat destfile="${release.dir}/icu4j-${release.file.ver}.md5">
986 <fileset dir="${out.dir}/checksum" includes="*"/>
987 <filterchain>
988 <fixcrlf eol="lf"/>
989 </filterchain>
990 </concat>
Fredrik Roubertf716bda2015-03-18 22:28:34 +0100991
992 <antcall target="_verify_config_for_release"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -0800993 </target>
994
995 <target name="release" depends="info, releaseBinaries, releaseSrcJars, releaseDocs, releaseSourceArchiveTgz" description="Build all ICU4J release files for distribution">
996 <mkdir dir="${out.dir}/checksum"/>
997 <delete dir="${out.dir}/checksum" includes="**/*"/>
998
999 <checksum todir="${out.dir}/checksum" format="MD5SUM">
1000 <fileset dir="${release.dir}">
1001 <include name="*.jar"/>
1002 <include name="*.tgz"/>
1003 </fileset>
1004 </checksum>
1005
1006 <concat destfile="${release.dir}/icu4j.md5">
1007 <fileset dir="${out.dir}/checksum" includes="*"/>
1008 <filterchain>
1009 <fixcrlf eol="lf"/>
1010 </filterchain>
1011 </concat>
Fredrik Roubertf716bda2015-03-18 22:28:34 +01001012
1013 <antcall target="_verify_config_for_release"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001014 </target>
1015
1016 <target name="releaseBinaries" depends="icu4jJar, charset, localespi" description="Build ICU4J binary files for distribution">
1017 <mkdir dir="${release.dir}"/>
1018 <copy file="${icu4j.jar.file}" tofile="${release.dir}/${icu4j.jar.file}"/>
1019 <copy file="${icu4j.charset.jar}" tofile="${release.dir}/${icu4j-charset.jar.file}"/>
1020 <copy file="${icu4j.localespi.jar}" tofile="${release.dir}/${icu4j-localespi.jar.file}"/>
1021 </target>
1022
1023 <target name="releaseSrcJars" depends="icu4jSrcJar" description="Build ICU4J src jar files for distribution">
1024 <mkdir dir="${release.dir}"/>
1025
1026 <!-- icu4j src-jar -->
1027 <copy file="${icu4j-src.jar.file}" tofile="${release.dir}/${icu4j-src.jar.file}"/>
1028
1029 <!-- charset/localespi src-jar -->
1030 <ant dir="${icu4j.charset.dir}" target="src-jar" inheritAll="false"/>
1031 <ant dir="${icu4j.localespi.dir}" target="src-jar" inheritAll="false"/>
1032
1033 <copy file="${icu4j.charset.dir}/${out.dir}/lib/${icu4j-charset-src.jar.file}" tofile="${release.dir}/${icu4j-charset-src.jar.file}"/>
1034 <copy file="${icu4j.localespi.dir}/${out.dir}/lib/${icu4j-localespi-src.jar.file}" tofile="${release.dir}/${icu4j-localespi-src.jar.file}"/>
1035 </target>
1036
1037
1038 <target name="releaseDocs" depends="docs" description="Build ICU4J API reference doc jar file for distribution">
1039 <mkdir dir="${release.dir}"/>
1040 <jar jarfile="${release.dir}/${icu4jdocs.jar.file}" compress="true" basedir="${doc.dir}"/>
1041 </target>
1042
1043 <property name="src.release.wrk.dir" value="${out.dir}/tmpsrc"/>
1044
1045 <target name="releaseSourceArchiveZip" description="Build ICU4J source release archive (.zip)">
1046 <delete dir="${src.release.wrk.dir}"/>
1047 <delete file="${icu4jsrc.zip.file}"/>
1048
1049 <mkdir dir="${src.release.wrk.dir}"/>
1050
1051 <fixcrlf srcdir="."
1052 destdir="${src.release.wrk.dir}"
1053 encoding="UTF-8"
1054 eol="crlf">
1055 <include name="demos/**/*"/>
1056 <include name="main/**/*"/>
1057 <include name="perf-tests/**/*"/>
1058 <include name="samples/**/*"/>
1059 <include name="tools/**/*"/>
1060 <include name="*.html"/>
1061 <include name="*.xml"/>
1062 <include name="*.properties"/>
1063 <include name="*.css"/>
1064 <include name="*.stub"/>
1065 <exclude name="**/out/**/*"/>
1066 <exclude name="**/*.jar"/>
1067 <exclude name="**/build-local.properties"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001068 <exclude name="main/tests/core/src/com/ibm/icu/dev/test/serializable/data/**/*.dat"/>
1069 <exclude name="main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.*.tri2"/>
1070 <exclude name="tools/build/icu4j*.api*.gz"/>
1071 </fixcrlf>
1072
1073 <mkdir dir="${release.dir}"/>
1074 <zip destfile="${release.dir}/${icu4jsrc.zip.file}">
1075 <fileset dir="${src.release.wrk.dir}" includes="**/*"/>
1076 <fileset dir="${basedir}">
1077 <include name="main/shared/data/*.jar"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001078 <include name="main/tests/core/src/com/ibm/icu/dev/test/serializable/data/**/*.dat"/>
1079 <include name="main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.*.tri2"/>
1080 <include name="tools/build/icu4j*.api*.gz"/>
1081 </fileset>
1082 </zip>
1083
1084 <delete dir="${src.release.wrk.dir}"/>
1085 </target>
1086
1087 <target name="releaseSourceArchiveTgz" description="Build ICU4J source release archive (.tgz)">
1088 <delete dir="${src.release.wrk.dir}"/>
1089 <delete file="${icu4jsrc.tgz.file}"/>
1090
1091 <mkdir dir="${src.release.wrk.dir}"/>
1092
1093 <fixcrlf srcdir="."
1094 destdir="${src.release.wrk.dir}"
1095 encoding="UTF-8"
1096 eol="lf">
1097 <include name="demos/**/*"/>
1098 <include name="main/**/*"/>
Nikita Iashchenkoda0990f2019-06-13 19:36:45 +01001099 <include name="maven/**/*"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001100 <include name="perf-tests/**/*"/>
1101 <include name="samples/**/*"/>
1102 <include name="tools/**/*"/>
1103 <include name="*.html"/>
1104 <include name="*.xml"/>
1105 <include name="*.properties"/>
1106 <include name="*.css"/>
1107 <include name="*.stub"/>
1108 <exclude name="**/out/**/*"/>
1109 <exclude name="**/*.jar"/>
1110 <exclude name="**/build-local.properties"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001111 <exclude name="main/tests/core/src/com/ibm/icu/dev/test/serializable/data/**/*.dat"/>
1112 <exclude name="main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.*.tri2"/>
1113 <exclude name="tools/build/icu4j*.api*.gz"/>
1114 </fixcrlf>
1115
1116 <property name="icu4jsrc.tar" value="${out.dir}/icu4jsrc.tar"/>
1117
1118 <tar destfile="${icu4jsrc.tar}" longfile="gnu">
1119 <fileset dir="${src.release.wrk.dir}" includes="**/*"/>
1120 <fileset dir="${basedir}">
1121 <include name="main/shared/data/*.jar"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001122 <include name="main/tests/core/src/com/ibm/icu/dev/test/serializable/data/**/*.dat"/>
1123 <include name="main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.*.tri2"/>
1124 <include name="tools/build/icu4j*.api*.gz"/>
1125 </fileset>
1126 </tar>
1127
1128 <mkdir dir="${release.dir}"/>
1129 <gzip destfile="${release.dir}/${icu4jsrc.tgz.file}" src="${icu4jsrc.tar}"/>
1130
1131 <delete dir="${src.release.wrk.dir}"/>
1132 <delete file="${icu4jsrc.tar}"/>
1133 </target>
1134
1135 <!-- findbugs targets -->
1136
1137 <target name="findbugs" description="Run FindBugs on all library sub projects.">
1138 <property name="findbugs.out.dir" value="${out.dir}/findbugs"/>
1139 <mkdir dir="${findbugs.out.dir}"/>
1140
1141 <ant dir="${icu4j.core.dir}" inheritAll="false" target="findbugs"/>
1142 <copy file="${icu4j.core.dir}/${out.dir}/fb-core.html" todir="${findbugs.out.dir}"/>
1143
1144 <ant dir="${icu4j.collate.dir}" inheritAll="false" target="findbugs"/>
1145 <copy file="${icu4j.collate.dir}/${out.dir}/fb-collate.html" todir="${findbugs.out.dir}"/>
1146
1147 <ant dir="${icu4j.currdata.dir}" inheritAll="false" target="findbugs"/>
1148 <copy file="${icu4j.currdata.dir}/${out.dir}/fb-currdata.html" todir="${findbugs.out.dir}"/>
1149
1150 <ant dir="${icu4j.langdata.dir}" inheritAll="false" target="findbugs"/>
1151 <copy file="${icu4j.langdata.dir}/${out.dir}/fb-langdata.html" todir="${findbugs.out.dir}"/>
1152
1153 <ant dir="${icu4j.regiondata.dir}" inheritAll="false" target="findbugs"/>
1154 <copy file="${icu4j.regiondata.dir}/${out.dir}/fb-regiondata.html" todir="${findbugs.out.dir}"/>
1155
1156 <ant dir="${icu4j.translit.dir}" inheritAll="false" target="findbugs"/>
1157 <copy file="${icu4j.translit.dir}/${out.dir}/fb-translit.html" todir="${findbugs.out.dir}"/>
1158
1159
1160 <ant dir="${icu4j.charset.dir}" inheritAll="false" target="findbugs"/>
1161 <copy file="${icu4j.charset.dir}/${out.dir}/fb-charset.html" todir="${findbugs.out.dir}"/>
1162
1163 <ant dir="${icu4j.localespi.dir}" inheritAll="false" target="findbugs"/>
1164 <copy file="${icu4j.localespi.dir}/${out.dir}/fb-localespi.html" todir="${findbugs.out.dir}"/>
1165 </target>
1166
1167 <!-- compile targets -->
1168 <target name="core" description="Build core classes">
1169 <ant dir="${icu4j.core.dir}" inheritAll="false"/>
1170 </target>
1171
1172 <target name="collate" depends="core" description="Build collation classes">
1173 <ant dir="${icu4j.collate.dir}" inheritAll="false"/>
1174 </target>
1175
1176 <target name="charset" depends="core" description="Build charset classes">
1177 <ant dir="${icu4j.charset.dir}" inheritAll="false"/>
1178 </target>
1179
1180 <target name="currdata" depends="core" description="Build currency data classes">
1181 <ant dir="${icu4j.currdata.dir}" inheritAll="false"/>
1182 </target>
1183
1184 <target name="langdata" depends="core" description="Build language data classes">
1185 <ant dir="${icu4j.langdata.dir}" inheritAll="false"/>
1186 </target>
1187
Victor Chang4578a1c2018-10-22 04:26:58 +01001188 <target name="localespi" depends="core, collate, currdata, langdata, regiondata" description="Build Locale SPI classes">
Fredrik Roubert7935b182014-11-18 20:21:54 -08001189 <ant dir="${icu4j.localespi.dir}" inheritAll="false"/>
1190 </target>
1191
1192 <target name="regiondata" depends="core" description="Build region data classes">
1193 <ant dir="${icu4j.regiondata.dir}" inheritAll="false"/>
1194 </target>
1195
1196 <target name="translit" depends="core" description="Build translit classes">
1197 <ant dir="${icu4j.translit.dir}" inheritAll="false"/>
1198 </target>
1199
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001200 <target name="test-framework" depends="core, init" description="Build test framework classes">
1201 <ant dir="${icu4j.test-framework.dir}" inheritAll="false">
1202 <reference refid="junit.jars"/>
1203 </ant>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001204 </target>
1205
Nikita Iashchenko4c0e2862019-11-05 16:38:00 +00001206 <target name="core-tests" depends="core, test-framework, tools" description="Build core tests">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001207 <ant dir="${icu4j.core-tests.dir}" inheritAll="false">
1208 <reference refid="junit.jars"/>
1209 </ant>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001210 </target>
1211
1212 <target name="collate-tests" depends="collate, test-framework" description="Build core tests">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001213 <ant dir="${icu4j.collate-tests.dir}" inheritAll="false">
1214 <reference refid="junit.jars"/>
1215 </ant>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001216 </target>
1217
1218 <target name="charset-tests" depends="charset, test-framework" description="Build charset tests">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001219 <ant dir="${icu4j.charset-tests.dir}" inheritAll="false">
1220 <reference refid="junit.jars"/>
1221 </ant>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001222 </target>
1223
Victor Chang4578a1c2018-10-22 04:26:58 +01001224 <target name="localespi-tests" depends="localespi, test-framework" description="Build Locale SPI tests">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001225 <ant dir="${icu4j.localespi-tests.dir}" inheritAll="false">
1226 <reference refid="junit.jars"/>
1227 </ant>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001228 </target>
1229
1230 <target name="packaging-tests" depends="test-framework" description="Build packaging tests">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001231 <ant dir="${icu4j.packaging-tests.dir}" inheritAll="false">
1232 <reference refid="junit.jars"/>
1233 </ant>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001234 </target>
1235
1236 <target name="translit-tests" depends="translit, test-framework" description="Build translit tests">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001237 <ant dir="${icu4j.translit-tests.dir}" inheritAll="false">
1238 <reference refid="junit.jars"/>
1239 </ant>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001240 </target>
1241
1242 <target name="demos" depends="core, charset, translit" description="Build demo classes">
1243 <ant dir="${icu4j.demos.dir}" inheritAll="false"/>
1244 </target>
1245
1246 <target name="samples" depends="core, charset, collate, translit" description="Build sample classes">
1247 <ant dir="${icu4j.samples.dir}" inheritAll="false"/>
1248 </target>
1249
1250 <target name="build-tools" description="Build build-tool classes">
1251 <ant dir="${icu4j.build-tools.dir}" inheritAll="false"/>
1252 </target>
1253
Nikita Iashchenko4c0e2862019-11-05 16:38:00 +00001254 <target name="tools" depends="core, collate, translit" description="Build tool classes">
Fredrik Roubert7935b182014-11-18 20:21:54 -08001255 <ant dir="${icu4j.tools.dir}" inheritAll="false"/>
1256 </target>
1257
Victor Chang4578a1c2018-10-22 04:26:58 +01001258 <target name="perf-tests" depends="core, charset, collate, tools" description="Build performance test classes">
Fredrik Roubert7935b182014-11-18 20:21:54 -08001259 <ant dir="${icu4j.perf-tests.dir}" inheritAll="false"/>
1260 </target>
1261
1262 <!-- doc targets -->
1263 <target name="docs" depends="info, build-tools, _checkJCite, _docsWithJCite, _docsWithoutJCite" description="Build API documents"/>
1264
Fredrik Roubert87255a32016-03-10 13:15:46 +01001265 <target name="docsStrict" description="Build API documents with all doclint check enabled">
1266 <condition property="doclint.option" value="-Xdoclint:all">
1267 <isset property="is.java8.plus"/>
1268 </condition>
1269 <antcall target="docs"/>
1270 </target>
1271
Fredrik Roubert7935b182014-11-18 20:21:54 -08001272 <target name="_checkJCite" if="env.JCITE_DIR">
1273 <fileset dir="${env.JCITE_DIR}" id="jcite.files">
1274 <include name="build/*.jar"/>
1275 <include name="lib/*.jar"/>
1276 </fileset>
1277 <pathconvert property="jcite.libs" refid="jcite.files"/>
1278
1279 <dirset dir="${basedir}" id="jcite.src.dirs">
1280 <include name="samples/src"/>
1281 <include name="demos/src"/>
1282 <include name="main/tests/*/src"/>
1283 </dirset>
1284 <pathconvert property="jcite.addl.src" refid="jcite.src.dirs"/>
1285 </target>
1286
1287 <target name="_docsStyleSheet">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001288 <condition property="docs.style.sheet" value="stylesheet7.css">
1289 <isset property="is.java7"/>
1290 </condition>
1291 <!-- all other cases -->
1292 <property name="docs.style.sheet" value="stylesheet8.css"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001293 </target>
1294
Fredrik Roubert87255a32016-03-10 13:15:46 +01001295 <target name="_docsLintOption" unless="doclint.options">
1296 <!-- syntax check is disabled because JCite tag name "@.jcite" is invalidated -->
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001297 <condition property="doclint.option" value="-Xdoclint:reference,html" else="">
Fredrik Roubert87255a32016-03-10 13:15:46 +01001298 <isset property="is.java8.plus"/>
1299 </condition>
Fredrik Roubertbd1cbb62015-09-28 21:14:09 +02001300 </target>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001301
Fredrik Roubert87255a32016-03-10 13:15:46 +01001302 <target name="_docsWithJCite" depends="_docsStyleSheet, _docsLintOption" if="jcite.libs">
1303 <echo message="Javadoc lint option: ${doclint.option}"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001304 <echo message="JCite library path: ${jcite.libs}"/>
1305 <echo message="JCite additional source path: ${jcite.addl.src}"/>
1306 <echo message="Custom stylesheet: ${docs.style.sheet}"/>
1307 <javadoc
1308 destdir="${doc.dir}"
1309 nodeprecatedlist="true"
1310 windowtitle="${icu4j.api.doc.window.title}"
1311 doctitle="${icu4j.api.doc.title}"
1312 header="${icu4j.api.doc.header}"
1313 encoding="${java.src.encoding}"
1314 docencoding="UTF-8"
1315 charset="UTF-8"
Fredrik Roubertd1ab31b2017-04-18 21:38:54 +02001316 bottom="${icu4j.api.doc.copyright.footer}"
Fredrik Roubert87255a32016-03-10 13:15:46 +01001317 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"
Fredrik Roubert7935b182014-11-18 20:21:54 -08001318 link="${icu4j.api.doc.jdk.link}"
Victor Chang4578a1c2018-10-22 04:26:58 +01001319 source="1.7"
Fredrik Roubert87255a32016-03-10 13:15:46 +01001320 stylesheetfile="${docs.style.sheet}"
1321 failonerror="true">
Fredrik Roubert7935b182014-11-18 20:21:54 -08001322 <packageset dir="${icu4j.core.dir}/src">
1323 <include name="com/ibm/icu/lang/**"/>
1324 <include name="com/ibm/icu/math/**"/>
Fredrik Roubertfe77e722017-11-27 19:43:43 +01001325 <include name="com/ibm/icu/number/**"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001326 <include name="com/ibm/icu/text/**"/>
1327 <include name="com/ibm/icu/util/**"/>
1328 </packageset>
1329 <packageset dir="${icu4j.collate.dir}/src">
1330 <include name="com/ibm/icu/text/**"/>
1331 </packageset>
1332 <packageset dir="${icu4j.translit.dir}/src">
1333 <include name="com/ibm/icu/text/**"/>
1334 </packageset>
1335 <packageset dir="${icu4j.charset.dir}/src">
1336 <include name="com/ibm/icu/charset/**"/>
1337 </packageset>
1338 </javadoc>
1339 </target>
1340
Fredrik Roubert87255a32016-03-10 13:15:46 +01001341 <target name="_docsWithoutJCite" depends="_docsStyleSheet, _docsLintOption" unless="jcite.libs">
1342 <echo message="Javadoc lint option: ${doclint.option}"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001343 <javadoc
1344 destdir="${doc.dir}"
1345 nodeprecatedlist="true"
1346 windowtitle="${icu4j.api.doc.window.title}"
1347 doctitle="${icu4j.api.doc.title}"
1348 header="${icu4j.api.doc.header}"
1349 encoding="${java.src.encoding}"
1350 docencoding="UTF-8"
1351 charset="UTF-8"
Fredrik Roubertd1ab31b2017-04-18 21:38:54 +02001352 bottom="${icu4j.api.doc.copyright.footer}"
Fredrik Roubert87255a32016-03-10 13:15:46 +01001353 additionalparam="${doclint.option} -breakiterator -use -tagletpath ${icu4j.build-tools.jar} -taglet com.ibm.icu.dev.tool.docs.ICUTaglet"
Fredrik Roubert7935b182014-11-18 20:21:54 -08001354 link="${icu4j.api.doc.jdk.link}"
Victor Chang4578a1c2018-10-22 04:26:58 +01001355 source="1.7"
Fredrik Roubert87255a32016-03-10 13:15:46 +01001356 failonerror="true">
Fredrik Roubert7935b182014-11-18 20:21:54 -08001357 <packageset dir="${icu4j.core.dir}/src">
1358 <include name="com/ibm/icu/lang/**"/>
1359 <include name="com/ibm/icu/math/**"/>
Fredrik Roubertfe77e722017-11-27 19:43:43 +01001360 <include name="com/ibm/icu/number/**"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001361 <include name="com/ibm/icu/text/**"/>
1362 <include name="com/ibm/icu/util/**"/>
1363 </packageset>
1364 <packageset dir="${icu4j.collate.dir}/src">
1365 <include name="com/ibm/icu/text/**"/>
1366 </packageset>
1367 <packageset dir="${icu4j.translit.dir}/src">
1368 <include name="com/ibm/icu/text/**"/>
1369 </packageset>
1370 <packageset dir="${icu4j.charset.dir}/src">
1371 <include name="com/ibm/icu/charset/**"/>
1372 </packageset>
1373 </javadoc>
1374 </target>
1375
Fredrik Roubertfe77e722017-11-27 19:43:43 +01001376 <!-- Component document targets, only used for Maven repository releases -->
1377 <target name="docsMaven" depends="info, build-tools, _checkJCite, _docsStyleSheet, _docsLintOption, _mavenIcu4jDoc, _mavenCharsetDoc, _mavenLocalespiDoc"
1378 description="Build API docs for each ICU4J maven artifact"/>
1379
1380 <target name="_mavenIcu4jDoc">
1381 <fail message="JCite must be configured." unless="jcite.libs"/>
1382 <delete dir="${maven.doc.base.dir}/icu4j"/>
1383
1384 <echo message="Javadoc lint option: ${doclint.option}"/>
1385 <echo message="JCite library path: ${jcite.libs}"/>
1386 <echo message="JCite additional source path: ${jcite.addl.src}"/>
1387 <echo message="Custom stylesheet: ${docs.style.sheet}"/>
1388 <javadoc
1389 destdir="${maven.doc.base.dir}/icu4j"
1390 nodeprecatedlist="true"
1391 windowtitle="${icu4j.main.api.doc.window.title}"
1392 doctitle="${icu4j.main.api.doc.title}"
1393 header="${icu4j.main.api.doc.header}"
1394 encoding="${java.src.encoding}"
1395 docencoding="UTF-8"
1396 charset="UTF-8"
1397 bottom="${icu4j.api.doc.copyright.footer}"
1398 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"
1399 link="${icu4j.api.doc.jdk.link}"
Victor Chang4578a1c2018-10-22 04:26:58 +01001400 source="1.7"
Fredrik Roubertfe77e722017-11-27 19:43:43 +01001401 stylesheetfile="${docs.style.sheet}"
1402 failonerror="true">
1403 <packageset dir="${icu4j.core.dir}/src">
1404 <include name="com/ibm/icu/lang/**"/>
1405 <include name="com/ibm/icu/math/**"/>
1406 <include name="com/ibm/icu/number/**"/>
1407 <include name="com/ibm/icu/text/**"/>
1408 <include name="com/ibm/icu/util/**"/>
1409 </packageset>
1410 <packageset dir="${icu4j.collate.dir}/src">
1411 <include name="com/ibm/icu/text/**"/>
1412 </packageset>
1413 <packageset dir="${icu4j.translit.dir}/src">
1414 <include name="com/ibm/icu/text/**"/>
1415 </packageset>
1416 </javadoc>
1417 </target>
1418
1419 <target name="_mavenCharsetDoc">
1420 <fail message="JCite must be configured." unless="jcite.libs"/>
1421 <delete dir="${maven.doc.base.dir}/charset"/>
1422
1423 <echo message="Javadoc lint option: ${doclint.option}"/>
1424 <echo message="JCite library path: ${jcite.libs}"/>
1425 <echo message="JCite additional source path: ${jcite.addl.src}"/>
1426 <echo message="Custom stylesheet: ${docs.style.sheet}"/>
1427 <javadoc
1428 destdir="${maven.doc.base.dir}/charset"
1429 nodeprecatedlist="true"
1430 windowtitle="${icu4j.charset.api.doc.window.title}"
1431 doctitle="${icu4j.charset.api.doc.title}"
1432 header="${icu4j.charset.api.doc.header}"
1433 encoding="${java.src.encoding}"
1434 docencoding="UTF-8"
1435 charset="UTF-8"
1436 bottom="${icu4j.api.doc.copyright.footer}"
1437 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"
1438 link="${icu4j.api.doc.jdk.link}"
Victor Chang4578a1c2018-10-22 04:26:58 +01001439 source="1.7"
Fredrik Roubertfe77e722017-11-27 19:43:43 +01001440 stylesheetfile="${docs.style.sheet}"
1441 failonerror="true"
1442 classpath="${icu4j.jar.file}">
1443 <packageset dir="${icu4j.charset.dir}/src">
1444 <include name="com/ibm/icu/charset/**"/>
1445 </packageset>
1446 </javadoc>
1447 </target>
1448
1449 <target name="_mavenLocalespiDoc">
1450 <delete dir="${maven.doc.base.dir}/localespi"/>
1451
1452 <echo message="Javadoc lint option: ${doclint.option}"/>
1453 <echo message="Custom stylesheet: ${docs.style.sheet}"/>
1454 <javadoc
1455 destdir="${maven.doc.base.dir}/localespi"
1456 nodeprecatedlist="true"
1457 windowtitle="${icu4j.localespi.api.doc.window.title}"
1458 doctitle="${icu4j.localespi.api.doc.title}"
1459 header="${icu4j.localespi.api.doc.header}"
1460 encoding="${java.src.encoding}"
1461 docencoding="UTF-8"
1462 charset="UTF-8"
1463 bottom="${icu4j.api.doc.copyright.footer}"
1464 additionalparam="${doclint.option} -breakiterator -use"
1465 link="${icu4j.api.doc.jdk.link}"
Victor Chang4578a1c2018-10-22 04:26:58 +01001466 source="1.7"
Fredrik Roubertfe77e722017-11-27 19:43:43 +01001467 failonerror="true"
1468 classpath="${icu4j.jar.file}">
1469 <packageset dir="${icu4j.localespi.dir}/src">
1470 <include name="com/ibm/icu/impl/javaspi"/>
1471 </packageset>
1472 </javadoc>
1473
1474 </target>
1475
1476
Fredrik Roubert7935b182014-11-18 20:21:54 -08001477 <!-- JaCoCo code coverage target -->
1478 <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml" onerror="ignore">
1479 <classpath path="${env.JACOCO_DIR}/lib/jacocoant.jar"/>
1480 </taskdef>
1481
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001482 <target name="coverageJaCoCo" depends="build-tools, jar, tests" description="Run the ICU4J unit tests and generate code coverage report">
Fredrik Roubert7935b182014-11-18 20:21:54 -08001483 <property name="jacoco.out.dir" value="${out.dir}/jacoco"/>
1484 <property name="jacoco.exec.data.file" value="${jacoco.out.dir}/jacoco.exec"/>
1485 <property name="jacoco.report.html.zip" value="${jacoco.out.dir}/report_html.zip"/>
1486 <property name="jacoco.report.xml" value="${jacoco.out.dir}/report.xml"/>
1487 <property name="jacoco.report.csv" value="${jacoco.out.dir}/report.csv"/>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001488 <property name="jacoco.exclusion.txt" value="coverage-exclusion.txt"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001489
1490 <delete dir="${jacoco.out.dir}"/>
1491 <mkdir dir="${jacoco.out.dir}"/>
1492
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001493 <!-- core -->
Fredrik Roubert7935b182014-11-18 20:21:54 -08001494 <jacoco:coverage destfile="${jacoco.exec.data.file}">
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001495 <junit fork="yes" forkmode="once" printsummary="yes" haltonfailure="no">
1496 <jvmarg value="-ea"/>
1497 <jvmarg value="-Djava.awt.headless=true"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001498 <classpath>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001499 <path refid="junit.jars"/>
1500 <path refid="junit.icu.jars"/>
1501 </classpath>
1502
1503 <batchtest todir="${junit.out.dir}/core">
1504 <fileset dir="${icu4j.core-tests.dir}/${bin.dir}">
1505 <patternset refid="test-classes-patternset"/>
1506 </fileset>
1507 </batchtest>
1508 </junit>
1509 </jacoco:coverage>
1510
1511 <!-- charset -->
1512 <jacoco:coverage destfile="${jacoco.exec.data.file}">
1513 <junit fork="yes" forkmode="once" printsummary="yes" haltonfailure="no">
1514 <jvmarg value="-ea"/>
1515 <jvmarg value="-Djava.awt.headless=true"/>
1516 <classpath>
1517 <path refid="junit.jars"/>
1518 <path refid="junit.icu.jars"/>
1519 </classpath>
1520
1521 <batchtest todir="${junit.out.dir}/charset">
1522 <fileset dir="${icu4j.charset-tests.dir}/${bin.dir}">
1523 <patternset refid="test-classes-patternset"/>
1524 </fileset>
1525 </batchtest>
1526 </junit>
1527 </jacoco:coverage>
1528
1529 <!-- collate -->
1530 <jacoco:coverage destfile="${jacoco.exec.data.file}">
1531 <junit fork="yes" forkmode="once" printsummary="yes" haltonfailure="no">
1532 <jvmarg value="-ea"/>
1533 <jvmarg value="-Djava.awt.headless=true"/>
1534 <classpath>
1535 <path refid="junit.jars"/>
1536 <path refid="junit.icu.jars"/>
1537 </classpath>
1538
1539 <batchtest todir="${junit.out.dir}/collate">
1540 <fileset dir="${icu4j.collate-tests.dir}/${bin.dir}">
1541 <patternset refid="test-classes-patternset"/>
1542 </fileset>
1543 </batchtest>
1544 </junit>
1545 </jacoco:coverage>
1546
1547 <!-- translit -->
1548 <jacoco:coverage destfile="${jacoco.exec.data.file}">
1549 <junit fork="yes" forkmode="once" printsummary="yes" haltonfailure="no">
1550 <jvmarg value="-ea"/>
1551 <jvmarg value="-Djava.awt.headless=true"/>
1552 <classpath>
1553 <path refid="junit.jars"/>
1554 <path refid="junit.icu.jars"/>
1555 </classpath>
1556
1557 <batchtest todir="${junit.out.dir}/translit">
1558 <fileset dir="${icu4j.translit-tests.dir}/${bin.dir}">
1559 <patternset refid="test-classes-patternset"/>
1560 </fileset>
1561 </batchtest>
1562 </junit>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001563 </jacoco:coverage>
1564
1565 <jacoco:report>
1566 <executiondata>
1567 <file file="${jacoco.exec.data.file}"/>
1568 </executiondata>
1569
1570 <structure name="ICU4J Project">
1571 <classfiles>
1572 <fileset dir=".">
1573 <include name="${icu4j.jar.file}"/>
1574 <include name="${icu4j-charset.jar.file}"/>
1575 </fileset>
1576 </classfiles>
1577 <sourcefiles encoding="UTF-8">
1578 <fileset dir="${icu4j.core.dir}/src"/>
1579 <fileset dir="${icu4j.collate.dir}/src"/>
1580 <fileset dir="${icu4j.currdata.dir}/src"/>
1581 <fileset dir="${icu4j.langdata.dir}/src"/>
1582 <fileset dir="${icu4j.regiondata.dir}/src"/>
1583 <fileset dir="${icu4j.translit.dir}/src"/>
1584
1585 <fileset dir="${icu4j.charset.dir}/src"/>
1586 </sourcefiles>
1587 </structure>
1588
1589 <html destfile="${jacoco.report.html.zip}"/>
1590 <xml destfile="${jacoco.report.xml}"/>
1591 <csv destfile="${jacoco.report.csv}"/>
1592 </jacoco:report>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001593
1594 <java classname="com.ibm.icu.dev.tool.coverage.JacocoReportCheck" failonerror="true">
1595 <arg line="${jacoco.report.xml} ${jacoco.exclusion.txt}"/>
1596 <classpath>
1597 <pathelement location="${icu4j.build-tools.jar}"/>
1598 </classpath>
1599 </java>
1600
Fredrik Roubert7935b182014-11-18 20:21:54 -08001601 </target>
1602
Fredrik Roubert7935b182014-11-18 20:21:54 -08001603 <!-- Release management targets -->
1604 <target name="checktags" depends="info, build-tools" description="Check API tags before release">
Victor Chang4578a1c2018-10-22 04:26:58 +01001605 <javadoc source="1.7"
1606 bootclasspath="${java7.bootclasspath}"
Fredrik Roubert7935b182014-11-18 20:21:54 -08001607 encoding="${java.src.encoding}">
1608 <packageset dir="${icu4j.core.dir}/src">
1609 <include name="com/ibm/icu/lang/**"/>
1610 <include name="com/ibm/icu/math/**"/>
Fredrik Roubertfe77e722017-11-27 19:43:43 +01001611 <include name="com/ibm/icu/number/**"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001612 <include name="com/ibm/icu/text/**"/>
1613 <include name="com/ibm/icu/util/**"/>
1614 </packageset>
1615 <packageset dir="${icu4j.collate.dir}/src">
1616 <include name="com/ibm/icu/**"/>
1617 </packageset>
1618 <packageset dir="${icu4j.charset.dir}/src">
1619 <include name="com/ibm/icu/charset/**"/>
1620 </packageset>
1621 <doclet name="com.ibm.icu.dev.tool.docs.CheckTags" path="${icu4j.build-tools.jar}"/>
1622 </javadoc>
1623 </target>
1624
1625 <target name="gatherapi" depends="info, build-tools" description="Run API database generator tool">
1626 <mkdir dir="${out.dir}"/>
Victor Chang4578a1c2018-10-22 04:26:58 +01001627 <javadoc source="1.7"
1628 bootclasspath="${java7.bootclasspath}"
Fredrik Roubert7935b182014-11-18 20:21:54 -08001629 encoding="${java.src.encoding}">
1630 <packageset dir="${icu4j.core.dir}/src">
1631 <include name="com/ibm/icu/lang/**"/>
1632 <include name="com/ibm/icu/math/**"/>
Fredrik Roubertfe77e722017-11-27 19:43:43 +01001633 <include name="com/ibm/icu/number/**"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001634 <include name="com/ibm/icu/text/**"/>
1635 <include name="com/ibm/icu/util/**"/>
1636 </packageset>
1637 <packageset dir="${icu4j.collate.dir}/src">
1638 <include name="com/ibm/icu/text/**"/>
1639 <include name="com/ibm/icu/util/**"/>
1640 </packageset>
1641 <packageset dir="${icu4j.charset.dir}/src">
1642 <include name="com/ibm/icu/charset/**"/>
1643 </packageset>
1644 <packageset dir="${icu4j.translit.dir}/src">
1645 <include name="com/ibm/icu/text/**"/>
1646 </packageset>
1647 <doclet name="com.ibm.icu.dev.tool.docs.GatherAPIData" path="${icu4j.build-tools.jar}">
1648 <param name="-name" value="ICU4J ${icu4j.impl.version}"/>
1649 <param name="-output" value="${out.dir}/icu4j${api.report.version}.api3"/>
1650 <param name="-internal"/>
1651 <param name="-version"/>
1652 <param name="-gzip"/>
1653 </doclet>
1654 </javadoc>
1655 </target>
1656
1657 <target name="apireport" depends="info, gatherapi" description="Run API report generator tool">
1658 <java classname="com.ibm.icu.dev.tool.docs.ReportAPI"
1659 classpath="${icu4j.build-tools.jar}"
1660 failonerror="true">
1661 <arg value="-old:" />
1662 <arg value="${icu4j.build-tools.dir}/icu4j${api.report.prev.version}.api3.gz" />
1663 <arg value="-new:" />
1664 <arg value="${out.dir}/icu4j${api.report.version}.api3.gz" />
1665 <arg value="-html" />
1666 <arg value="-out:" />
1667 <arg value="${out.dir}/icu4j_compare_${api.report.prev.version}_${api.report.version}.html" />
1668 </java>
1669 </target>
1670
1671 <target name="gatherapiOld" depends="info, build-tools" description="Run API database generator tool (Pre Java 5 style)">
1672 <mkdir dir="${out.dir}"/>
Victor Chang4578a1c2018-10-22 04:26:58 +01001673 <javadoc source="1.7"
1674 bootclasspath="${java7.bootclasspath}"
Fredrik Roubert7935b182014-11-18 20:21:54 -08001675 encoding="${java.src.encoding}">
1676 <packageset dir="${icu4j.core.dir}/src">
1677 <include name="com/ibm/icu/lang/**"/>
1678 <include name="com/ibm/icu/math/**"/>
Fredrik Roubertfe77e722017-11-27 19:43:43 +01001679 <include name="com/ibm/icu/number/**"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001680 <include name="com/ibm/icu/text/**"/>
1681 <include name="com/ibm/icu/util/**"/>
1682 </packageset>
1683 <packageset dir="${icu4j.collate.dir}/src">
1684 <include name="com/ibm/icu/text/**"/>
1685 <include name="com/ibm/icu/util/**"/>
1686 </packageset>
1687 <packageset dir="${icu4j.charset.dir}/src">
1688 <include name="com/ibm/icu/charset/**"/>
1689 </packageset>
1690 <packageset dir="${icu4j.translit.dir}/src">
1691 <include name="com/ibm/icu/text/**"/>
1692 </packageset>
1693 <doclet name="com.ibm.icu.dev.tool.docs.GatherAPIDataOld" path="${icu4j.build-tools.jar}">
1694 <param name="-name" value="ICU4J ${icu4j.impl.version}"/>
1695 <param name="-output" value="${out.dir}/icu4j${api.report.version}.api"/>
1696 <param name="-internal"/>
1697 <param name="-gzip"/>
1698 </doclet>
1699 </javadoc>
1700 </target>
1701
1702 <target name="apireportOld" depends="info, gatherapiOld" description="Run API report generator tool (Pre Java 5 Style)">
1703 <java classname="com.ibm.icu.dev.tool.docs.ReportAPI"
1704 classpath="${icu4j.build-tools.jar}"
1705 failonerror="true">
1706 <arg value="-old:" />
1707 <arg value="${icu4j.build-tools.dir}/icu4j${api.report.prev.version}.api.gz" />
1708 <arg value="-new:" />
1709 <arg value="${out.dir}/icu4j${api.report.version}.api.gz" />
1710 <arg value="-html" />
1711 <arg value="-internal" />
1712 <arg value="-out:" />
1713 <arg value="${out.dir}/icu4j_compare_${api.report.prev.version}_${api.report.version}.html" />
1714 </java>
1715 </target>
1716
1717 <target name="checkDeprecated" depends="info, build-tools, gatherapi, main"
1718 description="Check consistency between javadoc @deprecated and @Deprecated annotation">
1719 <java classname="com.ibm.icu.dev.tool.docs.DeprecatedAPIChecker"
1720 failonerror="true">
1721 <arg value="${out.dir}/icu4j${api.report.version}.api3.gz" />
1722 <classpath>
1723 <pathelement location="${icu4j.build-tools.jar}"/>
1724 <pathelement location="${icu4j.core.jar}"/>
1725 <pathelement location="${icu4j.collate.jar}"/>
1726 <pathelement location="${icu4j.charset.jar}"/>
1727 <pathelement location="${icu4j.currdata.jar}"/>
1728 <pathelement location="${icu4j.langdata.jar}"/>
1729 <pathelement location="${icu4j.regiondata.jar}"/>
1730 <pathelement location="${icu4j.translit.jar}"/>
1731 </classpath>
1732 </java>
1733 </target>
1734
Victor Chang4578a1c2018-10-22 04:26:58 +01001735 <target name="checkAPIStatusConsistency" depends="info, build-tools, gatherapi"
1736 description="Check consistency between API class status and methods overriding java.lang.Object">
1737 <!--
1738 If you need classes excluded from this check, define followig property in build-local.properties.
1739 e.g. checkAPIStatusConsistency.skip.classes=com.ibm.icu.text.Normalizer;com.ibm.icu.util.ULocale
1740 -->
1741 <property name="checkAPIStatusConsistency.skip.classes" value=""/>
1742 <java classname="com.ibm.icu.dev.tool.docs.APIStatusConsistencyChecker"
1743 failonerror="true">
1744 <arg value="${out.dir}/icu4j${api.report.version}.api3.gz" />
1745 <arg value="${checkAPIStatusConsistency.skip.classes}" />
1746 <classpath>
1747 <pathelement location="${icu4j.build-tools.jar}"/>
1748 <pathelement location="${icu4j.core.jar}"/>
1749 <pathelement location="${icu4j.collate.jar}"/>
1750 <pathelement location="${icu4j.charset.jar}"/>
1751 <pathelement location="${icu4j.currdata.jar}"/>
1752 <pathelement location="${icu4j.langdata.jar}"/>
1753 <pathelement location="${icu4j.regiondata.jar}"/>
1754 <pathelement location="${icu4j.translit.jar}"/>
1755 </classpath>
1756 </java>
1757 </target>
1758
1759 <target name="checkAPIStatus" depends="checkAPIStatusConsistency, checkDeprecated"/>
1760
Fredrik Roubert1ac15792018-03-26 20:56:58 +02001761 <target name="draftAPIs" depends="info, gatherapi" description="Run API collector tool and generate draft API report in html">
Fredrik Roubert7935b182014-11-18 20:21:54 -08001762 <java classname="com.ibm.icu.dev.tool.docs.CollectAPI"
1763 classpath="${icu4j.build-tools.jar}"
1764 failonerror="true">
1765 <arg value="-f"/>
1766 <arg value="Draft"/>
1767 <arg value="-o"/>
1768 <arg value="${out.dir}/draftAPIs.html"/>
1769 <arg value="${out.dir}/icu4j${api.report.version}.api3.gz" />
1770 </java>
1771 </target>
1772
Fredrik Roubert1ac15792018-03-26 20:56:58 +02001773 <target name="draftAPIsTSV" depends="info, gatherapi" description="Run API collector tool and generate draft API report in TSV">
1774 <java classname="com.ibm.icu.dev.tool.docs.CollectAPI"
1775 classpath="${icu4j.build-tools.jar}"
1776 failonerror="true">
1777 <arg value="-f"/>
1778 <arg value="Draft"/>
1779 <arg value="-o"/>
1780 <arg value="${out.dir}/draftAPIs.tsv"/>
1781 <arg value="-t"/>
1782 <arg value="${out.dir}/icu4j${api.report.version}.api3.gz" />
1783 </java>
1784 </target>
1785
Fredrik Roubert7935b182014-11-18 20:21:54 -08001786 <target name="swatDeprecated" depends="build-tools" description="Convert @deprecated @draft tags to @provisional">
1787 <antcall target="_runSwatDeprecated">
1788 <param name="swat.deprecated.opt" value="-dep"/>
1789 </antcall>
1790 </target>
1791
1792 <target name="swatProvisional" depends="build-tools" description="Convert @provisional tags to @deprecated @draft">
1793 <antcall target="_runSwatDeprecated">
1794 <param name="swat.deprecated.opt" value="-prov"/>
1795 </antcall>
1796 </target>
1797
1798 <target name="_runSwatDeprecated">
1799 <java classname="com.ibm.icu.dev.tool.docs.SwatDeprecated"
1800 classpath="${icu4j.build-tools.jar}"
1801 failonerror="true">
1802 <arg value="${swat.deprecated.opt}"/>
1803 <arg value="-src"/>
1804 <arg value="${icu4j.core.dir}/src"/>
1805 <arg value="-dst"/>
1806 <arg value="${icu4j.core.dir}/src"/>
1807 <arg value="-overwrite"/>
1808 <arg value="-verbose"/>
1809 </java>
1810 <java classname="com.ibm.icu.dev.tool.docs.SwatDeprecated"
1811 classpath="${icu4j.build-tools.jar}"
1812 failonerror="true">
1813 <arg value="${swat.deprecated.opt}"/>
1814 <arg value="-src"/>
1815 <arg value="${icu4j.charset.dir}/src"/>
1816 <arg value="-dst"/>
1817 <arg value="${icu4j.charset.dir}/src"/>
1818 <arg value="-overwrite"/>
1819 <arg value="-verbose"/>
1820 </java>
1821 </target>
1822
1823 <target name="serialTestData" depends="main, tests">
1824 <property name="serial.test.data.dir" value="${out.dir}/serialTestData"/>
1825 <delete dir="${serial.test.data.dir}"/>
1826 <mkdir dir="${serial.test.data.dir}"/>
1827 <java classname="com.ibm.icu.dev.test.serializable.SerializableWriter" fork="yes" failonerror="true">
1828 <arg line="${serial.test.data.dir}"/>
1829 <classpath>
1830 <pathelement location="${icu4j.core.jar}"/>
1831 <pathelement location="${icu4j.collate.jar}"/>
1832 <pathelement location="${icu4j.charset.jar}"/>
1833 <pathelement location="${icu4j.currdata.jar}"/>
1834 <pathelement location="${icu4j.langdata.jar}"/>
1835 <pathelement location="${icu4j.regiondata.jar}"/>
1836 <pathelement location="${icu4j.translit.jar}"/>
1837 <pathelement location="${icu4j.test-framework.jar}"/>
1838 <pathelement location="${icu4j.core-tests.jar}"/>
1839 </classpath>
1840 </java>
1841 <echo message="Note: The serialization compatibility test data files were"/>
1842 <echo message="created in ${serial.test.data.dir}. Once you confirm"/>
1843 <echo message="the test runs clean, you should copy the data file directory to"/>
1844 <echo message="main/tests/core/src/com/ibm/icu/dev/test/serializable/data."/>
1845 </target>
1846
1847 <!-- Special packaging targets -->
1848 <target name="translitIMEJar" depends="info" description="Build transliterator IME 'icutransime.jar' jar file">
1849 <property name="translit.ime.out.dir" value="${out.dir}/translit_ime"/>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001850
Fredrik Roubert7935b182014-11-18 20:21:54 -08001851 <mkdir dir="${translit.ime.out.dir}/bin"/>
1852 <javac destdir="${translit.ime.out.dir}/bin"
1853 source="${javac.source}"
1854 target="${javac.target}"
1855 encoding="${java.src.encoding}"
1856 debug="on" deprecation="off">
1857 <src path="${icu4j.core.dir}/src"/>
1858 <src path="${icu4j.translit.dir}/src"/>
1859 <src path="${icu4j.tools.dir}/src"/>
1860 <include name="com/ibm/icu/dev/tool/ime/translit/*.java"/>
1861 </javac>
1862
1863 <copy file="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/translit/Transliterator.properties"
1864 todir="${translit.ime.out.dir}/bin/com/ibm/icu/dev/tool/ime/translit"/>
1865
1866 <mkdir dir="${translit.ime.out.dir}/lib"/>
1867 <jar jarfile="${translit.ime.out.dir}/lib/icutransime.jar"
1868 compress="true"
1869 basedir="${translit.ime.out.dir}/bin"
1870 includes="com/ibm/icu/dev/tool/ime/translit/**/*"
1871 manifest="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/translit/manifest.stub">
1872 <metainf dir="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/translit" includes="services/*" />
1873 </jar>
1874 </target>
1875
1876 <target name="indicIMEJar" depends="info" description="Build indic IME 'icuindicime.jar' jar file">
1877 <property name="indic.ime.out.dir" value="${out.dir}/indic_ime"/>
Fredrik Roubert2d2bb242016-10-21 19:44:52 +02001878
Fredrik Roubert7935b182014-11-18 20:21:54 -08001879 <mkdir dir="${indic.ime.out.dir}/bin"/>
1880 <javac destdir="${indic.ime.out.dir}/bin"
1881 source="${javac.source}"
1882 target="${javac.target}"
1883 encoding="${java.src.encoding}"
1884 debug="on" deprecation="off">
1885 <src path="${icu4j.core.dir}/src"/>
1886 <src path="${icu4j.tools.dir}/src"/>
1887 <include name="com/ibm/icu/dev/tool/ime/indic/*.java"/>
1888 </javac>
1889
1890 <copy file="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/indic/DisplayNames.properties"
1891 todir="${indic.ime.out.dir}/bin/com/ibm/icu/dev/tool/ime/indic"/>
1892
1893 <mkdir dir="${indic.ime.out.dir}/lib"/>
1894 <jar jarfile="${indic.ime.out.dir}/lib/icuindicime.jar"
1895 compress="true"
1896 basedir="${indic.ime.out.dir}/bin"
1897 includes="com/ibm/icu/dev/tool/ime/indic/**/*"
1898 manifest="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/indic/manifest.stub">
1899 <metainf dir="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/indic" includes="services/*" />
1900 </jar>
1901 </target>
1902
1903 <target name="cldrUtil" depends="icu4jJar" description="Build Utilities for CLDR tooling">
1904 <mkdir dir="${cldr.util.out.dir}/bin"/>
1905 <javac destdir="${cldr.util.out.dir}/bin"
1906 source="${javac.source}"
1907 target="${javac.target}"
1908 encoding="${java.src.encoding}"
1909 debug="on" deprecation="off"
1910 classpath="${icu4j.jar.file}">
1911
1912 <src path="${icu4j.tools.dir}/src"/>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001913 <src path="${icu4j.test-framework.dir}/src"/>
1914
Fredrik Roubertd1ab31b2017-04-18 21:38:54 +02001915 <include name="com/ibm/icu/dev/util/CollectionUtilities.java" />
1916 <include name="com/ibm/icu/dev/util/ElapsedTimer.java" />
1917 <include name="com/ibm/icu/dev/util/UnicodeMap.java" />
1918 <include name="com/ibm/icu/dev/util/UnicodeMapIterator.java" />
Fredrik Roubert7935b182014-11-18 20:21:54 -08001919 <include name="com/ibm/icu/dev/tool/UOption.java" />
1920 </javac>
1921
1922 <mkdir dir="${cldr.util.out.dir}/lib"/>
1923 <jar jarfile="${cldr.util.out.dir}/lib/utilities.jar"
1924 compress="true"
1925 basedir="${cldr.util.out.dir}/bin">
Fredrik Roubert7935b182014-11-18 20:21:54 -08001926 <include name="com/ibm/icu/dev/util/*.class"/>
1927 <include name="com/ibm/icu/dev/tool/UOption*.class"/>
1928 </jar>
1929 </target>
1930
1931 <target name="releaseCLDR" depends="icu4jJar,icu4jSrcJar,cldrUtil" description="Build release files for CLDR tooling">
1932 <mkdir dir="${cldr.release.dir}"/>
1933 <!-- icu4j.jar -->
1934 <copy file="${icu4j.jar.file}" todir="${cldr.release.dir}"/>
1935 <!-- icu4j-src.jar -->
1936 <copy file="${icu4j-src.jar.file}" todir="${cldr.release.dir}"/>
1937 <!-- utilities.jar -->
1938 <copy file="${cldr.util.out.dir}/lib/utilities.jar" todir="${cldr.release.dir}"/>
1939 <!-- utilities-src.jar -->
1940 <jar jarfile="${cldr.release.dir}/utilities-src.jar" compress="true">
1941 <fileset dir="${icu4j.test-framework.dir}/${src.dir}">
Fredrik Roubertd1ab31b2017-04-18 21:38:54 +02001942 <include name="com/ibm/icu/dev/util/CollectionUtilities.java" />
1943 <include name="com/ibm/icu/dev/util/ElapsedTimer.java" />
1944 <include name="com/ibm/icu/dev/util/UnicodeMap.java" />
1945 <include name="com/ibm/icu/dev/util/UnicodeMapIterator.java" />
Fredrik Roubert7935b182014-11-18 20:21:54 -08001946 </fileset>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001947 <fileset dir="${icu4j.tools.dir}/${src.dir}" includes="com/ibm/icu/dev/tool/UOption.java"/>
1948 </jar>
1949 </target>
1950
1951 <target name="xliff" description="Build xliff converter tool">
1952 <property name="xliff.out.dir" value="${out.dir}/xliff"/>
1953
1954 <mkdir dir="${xliff.out.dir}/bin"/>
1955 <javac destdir="${xliff.out.dir}/bin"
1956 source="1.3"
1957 target="1.3"
1958 encoding="${java.src.encoding}"
1959 debug="on" deprecation="off">
1960 <src path="${icu4j.tools.dir}/src"/>
1961 <include name="com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java"/>
1962 <include name="com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java"/>
1963 <include name="com/ibm/icu/dev/tool/UOption.java"/>
1964 </javac>
1965
1966 <mkdir dir="${xliff.out.dir}/lib"/>
1967
1968 <jar jarfile="${xliff.out.dir}/lib/xliff-src.jar"
1969 compress="true"
1970 basedir="${icu4j.tools.dir}/src">
1971 <include name="com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java"/>
1972 <include name="com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java"/>
1973 <include name="com/ibm/icu/dev/tool/UOption.java"/>
1974 </jar>
1975
1976 <jar jarfile="${xliff.out.dir}/lib/xliff.jar"
1977 compress="true"
1978 basedir="${xliff.out.dir}/bin"
1979 manifest="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/localeconverter/manifest.stub"/>
1980 </target>
Fredrik Roubert7935b182014-11-18 20:21:54 -08001981</project>