• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" encoding="UTF-8"?>
2<!--
3* © 2016 and later: Unicode, Inc. and others.
4* License & terms of use: http://www.unicode.org/copyright.html
5-->
6<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
7  <modelVersion>4.0.0</modelVersion>
8
9  <groupId>com.ibm.icu</groupId>
10  <artifactId>icu4j-root</artifactId>
11  <version>76.1</version>
12  <packaging>pom</packaging>
13
14  <name>${proj-title} (${project.artifactId})</name>
15  <description>International Components for Unicode for Java (ICU4J) is a mature, widely used Java library
16    providing Unicode and Globalization support.
17    This is the base artifact with common settings, not intended to use directly.</description>
18  <url>${proj.url}</url>
19  <inceptionYear>1995</inceptionYear>
20
21  <organization>
22    <name>Unicode, Inc.</name>
23    <url>https://icu.unicode.org/</url>
24  </organization>
25
26  <modules>
27    <module>main/framework</module>
28    <module>main/core</module>
29    <!-- For publishing to Maven Central -->
30    <module>main/charset</module>
31    <module>main/collate</module>
32    <module>main/currdata</module>
33    <module>main/langdata</module>
34    <module>main/regiondata</module>
35    <module>main/translit</module>
36    <module>main/common_tests</module>
37    <!-- Shaded jar for publishing to Maven Central -->
38    <module>main/icu4j</module>
39    <!-- For publishing to Maven Central. Not shaded, but depends on the shaded artifacts above.
40         Also contains all the project properties (developers, scm, etc) needed for maven publishing.
41    -->
42    <module>main/localespi</module>
43
44    <module>demos</module>
45    <module>samples</module>
46    <module>tools/misc</module>
47    <module>perf-tests</module>
48  </modules>
49
50  <properties>
51    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
52    <maven.compiler.source>1.8</maven.compiler.source>
53    <maven.compiler.target>1.8</maven.compiler.target>
54
55    <maven-central-repo-url>https://oss.sonatype.org</maven-central-repo-url>
56    <maven-central-releases-repo-url>${maven-central-repo-url}/service/local/staging/deploy/maven2</maven-central-releases-repo-url>
57    <maven-central-snapshots-repo-url>${maven-central-repo-url}/content/repositories/snapshots</maven-central-snapshots-repo-url>
58
59    <!-- This is the folder where we gather the files to be posted in the Github Release-->
60    <release.directory>${project.build.directory}/release_directory</release.directory>
61
62    <junit.version>4.13.2</junit.version>
63    <junitparams.version>1.1.1</junitparams.version>
64    <gson.version>2.11.0</gson.version>
65    <commons-cli.version>1.9.0</commons-cli.version>
66
67    <proj-title>International Components for Unicode for Java</proj-title>
68    <proj.displayname>${project.artifactId}</proj.displayname>
69    <proj.url>https://icu.unicode.org/</proj.url>
70    <proj.scm.connection>scm:git:git://github.com/unicode-org/icu.git</proj.scm.connection>
71    <proj.scm.developerConnection>scm:git:git@github.com:unicode-org/icu.git</proj.scm.developerConnection>
72    <proj.scm.url>https://github.com/unicode-org/icu</proj.scm.url>
73
74    <!-- Version update! -->
75    <icu.major.version>76</icu.major.version>
76
77    <!-- Variables used to generate the javadoc -->
78    <!-- Version update! -->
79    <api.doc.version>${icu.major.version}</api.doc.version>
80    <icu4j.api.doc.window.title>ICU4J ${api.doc.version}</icu4j.api.doc.window.title>
81    <icu4j.api.doc.header>ICU4J ${api.doc.version}</icu4j.api.doc.header>
82    <icu4j.api.doc.copyright.footer>&lt;font size=-1&gt;Copyright © 2016 Unicode, Inc. and others.&lt;/font&gt;</icu4j.api.doc.copyright.footer>
83
84    <!-- Needs to be overriden in sub-modules -->
85    <icu4j.api.doc.root.dir>${project.basedir}</icu4j.api.doc.root.dir>
86    <icu4j.api.report.version>${icu.major.version}</icu4j.api.report.version>
87
88    <!-- Used for the .jar Manifest files -->
89    <mf.Specification-Version>${icu.major.version}</mf.Specification-Version>
90    <mf.Implementation-Version>${project.version}</mf.Implementation-Version>
91    <mf.Bundle-Version>${project.version}</mf.Bundle-Version>
92    <mf.Bundle-RequiredExecutionEnvironment>JavaSE-1.8</mf.Bundle-RequiredExecutionEnvironment>
93
94    <!-- For most modules artifactId does not have an "icu4j" prefix, so this is a good default -->
95    <module-name>${project.artifactId}</module-name>
96
97    <!-- Manifest fields that rarely change, if ever -->
98    <mf.Specification-Title>${proj-title} (${proj.displayname})</mf.Specification-Title>
99    <mf.Implementation-Title>${proj-title} (${proj.displayname})</mf.Implementation-Title>
100    <mf.Bundle-Description>${proj-title} (${proj.displayname})</mf.Bundle-Description>
101    <mf.Bundle-SymbolicName>com.ibm.icu.${module-name}</mf.Bundle-SymbolicName>
102    <mf.Automatic-Module-Name>com.ibm.icu.${module-name}</mf.Automatic-Module-Name>
103    <mf.Bundle-Name>ICU4J ${proj.displayname}</mf.Bundle-Name>
104
105    <mf.Specification-Vendor>Unicode, Inc.</mf.Specification-Vendor>
106    <mf.Implementation-Vendor>Unicode, Inc.</mf.Implementation-Vendor>
107    <mf.Bundle-Vendor>Unicode, Inc.</mf.Bundle-Vendor>
108    <mf.Implementation-Vendor-Id>org.unicode</mf.Implementation-Vendor-Id>
109    <mf.Manifest-Version>1.0</mf.Manifest-Version>
110    <mf.Bundle-ManifestVersion>2</mf.Bundle-ManifestVersion>
111    <mf.Bundle-Copyright>© 2016 and later: Unicode, Inc. and others. License &amp; terms of use: http://www.unicode.org/copyright.html</mf.Bundle-Copyright>
112  </properties>
113
114  <licenses>
115    <license>
116      <name>Unicode-3.0</name>
117      <url>https://raw.githubusercontent.com/unicode-org/icu/maint/maint-${icu.major.version}/LICENSE</url>
118      <distribution>repo</distribution>
119    </license>
120  </licenses>
121
122  <developers>
123    <developer>
124      <id>markusicu</id> <!-- GitHub ID -->
125      <name>Markus Scherer</name>
126      <organization>Google</organization>
127      <roles>
128        <role>Chair</role>
129      </roles>
130    </developer>
131    <developer>
132      <id>richgillam</id> <!-- GitHub ID -->
133      <name>Richard Gillam</name>
134      <roles>
135        <role>Vice chair</role>
136      </roles>
137    </developer>
138  </developers>
139
140  <mailingLists>
141    <mailingList>
142      <name>icu-support</name>
143      <subscribe>https://lists.sourceforge.net/lists/listinfo/icu-support</subscribe>
144      <unsubscribe>https://lists.sourceforge.net/lists/listinfo/icu-support</unsubscribe>
145      <post>icu-support@lists.sourceforge.net</post>
146      <archive>http://sourceforge.net/mailarchive/forum.php?forum_name=icu-support</archive>
147    </mailingList>
148    <mailingList>
149      <name>icu-announce</name>
150      <subscribe>https://lists.sourceforge.net/lists/listinfo/icu-announce</subscribe>
151      <unsubscribe>https://lists.sourceforge.net/lists/listinfo/icu-announce</unsubscribe>
152      <post>icu-announce@lists.sourceforge.net</post>
153      <archive>http://sourceforge.net/mailarchive/forum.php?forum_name=icu-announce</archive>
154    </mailingList>
155    <mailingList>
156      <name>icu-design</name>
157      <subscribe>https://lists.sourceforge.net/lists/listinfo/icu-design</subscribe>
158      <unsubscribe>https://lists.sourceforge.net/lists/listinfo/icu-design</unsubscribe>
159      <post>icu-design@lists.sourceforge.net</post>
160      <archive>http://sourceforge.net/mailarchive/forum.php?forum_name=icu-design</archive>
161    </mailingList>
162  </mailingLists>
163
164  <scm>
165    <connection>${proj.scm.connection}</connection>
166    <developerConnection>${proj.scm.developerConnection}</developerConnection>
167    <url>${proj.scm.url}</url>
168  </scm>
169
170  <issueManagement>
171    <system>JIRA</system>
172    <url>https://unicode-org.atlassian.net/projects/ICU</url>
173  </issueManagement>
174
175  <distributionManagement>
176    <repository>
177      <id>icu4j-maven-repo</id>
178      <name>ICU4J Central Repository</name>
179      <url>${maven-central-releases-repo-url}</url>
180    </repository>
181    <snapshotRepository>
182      <id>icu4j-maven-repo</id>
183      <name>ICU4J Central Development Repository</name>
184      <url>${maven-central-snapshots-repo-url}</url>
185    </snapshotRepository>
186  </distributionManagement>
187
188  <build>
189    <pluginManagement>
190      <plugins>
191        <plugin>
192          <artifactId>maven-clean-plugin</artifactId>
193          <version>3.4.0</version>
194        </plugin>
195        <plugin>
196          <artifactId>maven-resources-plugin</artifactId>
197          <version>3.3.1</version>
198        </plugin>
199        <plugin>
200          <artifactId>maven-compiler-plugin</artifactId>
201          <version>3.13.0</version>
202          <!-- Plugin bug, maven.compiler.* properties are not honored, see
203            https://issues.apache.org/jira/browse/MCOMPILER-545
204          -->
205          <configuration>
206            <source>${maven.compiler.source}</source>
207            <target>${maven.compiler.target}</target>
208          </configuration>
209        </plugin>
210        <plugin>
211          <artifactId>maven-surefire-plugin</artifactId>
212          <version>3.4.0</version>
213          <configuration>
214            <includes>
215              <!-- Some test files start with "IntlTest...". Many don't fit
216                the Surefire test file name default patterns. To be safe, use
217                a catchall pattern instead of the default patterns.
218
219                FYI, the default patterns are documented on the website of the
220                testing plugin:
221                https://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html
222              -->
223              <include>**/*.java</include>
224            </includes>
225          </configuration>
226        </plugin>
227        <plugin>
228          <artifactId>maven-failsafe-plugin</artifactId>
229          <version>3.4.0</version>
230        </plugin>
231        <plugin>
232          <artifactId>maven-install-plugin</artifactId>
233          <version>3.1.3</version>
234        </plugin>
235        <plugin>
236          <artifactId>maven-deploy-plugin</artifactId>
237          <version>3.1.3</version>
238        </plugin>
239        <plugin>
240          <artifactId>maven-site-plugin</artifactId>
241          <version>4.0.0-M16</version>
242        </plugin>
243        <plugin>
244          <artifactId>maven-source-plugin</artifactId>
245          <version>3.3.1</version>
246        </plugin>
247        <plugin>
248          <artifactId>maven-gpg-plugin</artifactId>
249          <version>3.2.5</version>
250        </plugin>
251        <plugin>
252          <artifactId>maven-project-info-reports-plugin</artifactId>
253          <version>3.7.0</version>
254        </plugin>
255        <plugin>
256          <artifactId>maven-shade-plugin</artifactId>
257          <version>3.6.0</version>
258        </plugin>
259        <plugin>
260          <artifactId>maven-assembly-plugin</artifactId>
261          <version>3.7.1</version>
262        </plugin>
263        <plugin>
264          <artifactId>maven-dependency-plugin</artifactId>
265          <version>3.8.0</version>
266        </plugin>
267        <plugin>
268          <groupId>org.codehaus.mojo</groupId>
269          <artifactId>build-helper-maven-plugin</artifactId>
270          <version>3.6.0</version>
271          <executions>
272            <execution>
273              <!-- Workaround for Windows symlink issue:
274                 https://issues.apache.org/jira/browse/MRESOURCES-237
275                 Note: The recommended fix there is to filter out the symlink files, which
276                 would result in no license files in the .jar. That is not what we want.
277                 Instead, this `<execution>` config copies the LICENSE file to `target` at build time.
278              -->
279              <id>add-resource</id>
280              <goals>
281                <goal>add-resource</goal>
282              </goals>
283              <configuration>
284                <resources>
285                  <resource>
286                    <directory>${rootlocation}/../testdata/</directory>
287                    <includes>
288                      <!-- Do not "repair" this to use ${rootlocation}/../ and LICENSE.
289                        This is a workaround for Eclipse, which fails to import the projects because
290                        ${rootlocation}/../ overlaps with the location of the sub-projects (for example main/core).
291                        True, because {rootlocation} is resolved to $icu_root/icu4j.
292                        So ${rootlocation}/../ points to $icu_root, which overlaps with $icu_root/icu4j/main/core.
293                        But $icu_root/testdata/ does not overlap with $icu_root/icu4j/ so all is good.
294                        We then go up one step for the LICENSE, because Eclipse does not validate for files overlapping, only folders.
295                      -->
296                      <include>../LICENSE</include>
297                    </includes>
298                  </resource>
299                </resources>
300              </configuration>
301            </execution>
302            <execution>
303              <id>root-location</id>
304              <phase>initialize</phase>
305              <goals>
306                <goal>rootlocation</goal>
307              </goals>
308            </execution>
309          </executions>
310        </plugin>
311        <plugin>
312          <artifactId>maven-release-plugin</artifactId>
313          <version>3.1.1</version>
314        </plugin>
315        <plugin>
316          <groupId>org.codehaus.mojo</groupId>
317          <artifactId>flatten-maven-plugin</artifactId>
318          <version>1.6.0</version>
319          <configuration>
320            <flattenMode>ossrh</flattenMode>
321          </configuration>
322          <executions>
323            <execution>
324              <id>flatten</id>
325              <phase>process-resources</phase>
326              <goals>
327                <goal>flatten</goal>
328              </goals>
329            </execution>
330            <execution>
331              <id>flatten.clean</id>
332              <phase>clean</phase>
333              <goals>
334                <goal>clean</goal>
335              </goals>
336            </execution>
337          </executions>
338        </plugin>
339        <plugin>
340          <artifactId>maven-enforcer-plugin</artifactId>
341          <version>3.5.0</version>
342          <executions>
343            <execution>
344              <id>enforce-maven</id>
345              <goals>
346                <goal>enforce</goal>
347              </goals>
348              <configuration>
349                <rules>
350                  <requireMavenVersion>
351                    <version>3.6.3</version>
352                  </requireMavenVersion>
353                </rules>
354              </configuration>
355            </execution>
356          </executions>
357        </plugin>
358        <plugin>
359          <artifactId>maven-javadoc-plugin</artifactId>
360          <version>3.8.0</version>
361          <configuration>
362            <excludePackageNames>com.ibm.icu.impl,com.ibm.icu.impl.*,com.ibm.icu.dev.*,com.ibm.icu.samples,com.ibm.icu.samples.*</excludePackageNames>
363            <!--
364              The ant project specified <doclint>reference,html</doclint>.
365              But that fails in main\core\src\main\java because maven enforces dependencies more strictly:
366                [ERROR] com\ibm\icu\text\UnicodeFilter.java:15: error: reference not found
367                [ERROR]  * {@link com.ibm.icu.text.Transliterator}
368                [ERROR] com\ibm\icu\util\ULocale.java:100: error: reference not found
369                [ERROR]  * {@link com.ibm.icu.text.Collator}
370            -->
371            <doclint>html</doclint>
372            <notimestamp>true</notimestamp>
373            <nodeprecatedlist>true</nodeprecatedlist>
374            <quiet>true</quiet>
375            <windowtitle>${icu4j.api.doc.window.title}</windowtitle>
376            <doctitle>${icu4j.api.doc.window.title}</doctitle>
377            <header>${icu4j.api.doc.header}</header>
378            <bottom>${icu4j.api.doc.copyright.footer}</bottom>
379            <stylesheetfile>${icu4j.api.doc.root.dir}/stylesheet8.css</stylesheetfile>
380            <encoding>UTF-8</encoding>
381            <docencoding>UTF-8</docencoding>
382            <charset>UTF-8</charset>
383            <breakiterator>true</breakiterator>
384            <use>true</use>
385            <maxmemory>256m</maxmemory>
386            <minmemory>256m</minmemory>
387            <!-- <verbose>true</verbose> -->
388            <additionalJOptions>
389              <additionalJOption>-J-Djcitesourcepath=${icu4j.api.doc.root.dir}/samples/src/main/java${path.separator}${icu4j.api.doc.root.dir}/demos/src/main/java${path.separator}${icu4j.api.doc.root.dir}/main/core/src/main/java</additionalJOption>
390              <additionalJOption>-J-Dfile.encoding=UTF-8</additionalJOption>
391              <additionalJOption>-J-Djciteverbose=true</additionalJOption>
392            </additionalJOptions>
393            <taglets>
394              <taglet>
395                <tagletClass>com.ibm.icu.dev.tool.docs.ICUTaglet</tagletClass>
396              </taglet>
397              <taglet>
398                <tagletClass>ch.arrenbrecht.jcite.JCiteTaglet</tagletClass>
399              </taglet>
400            </taglets>
401            <tagletArtifacts>
402              <!-- To handle the ICU custom taglets (@icu, @draft, @stable, etc -->
403              <tagletArtifact>
404                <groupId>com.ibm.icu</groupId>
405                <artifactId>tools_build</artifactId>
406                <version>${project.version}</version>
407              </tagletArtifact>
408              <!-- Include code fragments from a .java file. -->
409              <tagletArtifact>
410                <groupId>org.mcraig</groupId>
411                <artifactId>jcite</artifactId>
412                <version>1.13.0</version>
413              </tagletArtifact>
414              <!-- Dependencies for org.mcraig:jcite -->
415              <tagletArtifact>
416                <groupId>commons-discovery</groupId>
417                <artifactId>commons-discovery</artifactId>
418                <version>0.5</version>
419              </tagletArtifact>
420              <tagletArtifact>
421                <groupId>commons-logging</groupId>
422                <artifactId>commons-logging</artifactId>
423                <version>1.2</version>
424              </tagletArtifact>
425            </tagletArtifacts>
426            <tags>
427              <tag>
428                <name>category</name>
429                <placement>a</placement>
430                <head>Category:</head>
431              </tag>
432            </tags>
433          </configuration>
434        </plugin>
435        <plugin>
436          <artifactId>maven-jar-plugin</artifactId>
437          <version>3.4.2</version>
438          <configuration>
439            <archive>
440              <manifest>
441                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
442                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
443              </manifest>
444              <manifestEntries>
445                <Automatic-Module-Name>${mf.Automatic-Module-Name}</Automatic-Module-Name>
446                <Bundle-Copyright>${mf.Bundle-Copyright}</Bundle-Copyright>
447                <Specification-Title>${mf.Specification-Title}</Specification-Title>
448                <Specification-Version>${mf.Specification-Version}</Specification-Version>
449                <Specification-Vendor>${mf.Specification-Vendor}</Specification-Vendor>
450                <Implementation-Title>${mf.Implementation-Title}</Implementation-Title>
451                <Implementation-Version>${mf.Implementation-Version}</Implementation-Version>
452                <Implementation-Vendor>${mf.Implementation-Vendor}</Implementation-Vendor>
453                <Implementation-Vendor-Id>${mf.Implementation-Vendor-Id}</Implementation-Vendor-Id>
454                <Bundle-ManifestVersion>${mf.Bundle-ManifestVersion}</Bundle-ManifestVersion>
455                <Bundle-Name>${mf.Bundle-Name}</Bundle-Name>
456                <Bundle-Description>${mf.Bundle-Description}</Bundle-Description>
457                <Bundle-SymbolicName>${mf.Bundle-SymbolicName}</Bundle-SymbolicName>
458                <Bundle-Version>${mf.Bundle-Version}</Bundle-Version>
459                <Bundle-Vendor>${mf.Bundle-Vendor}</Bundle-Vendor>
460                <Bundle-Copyright>${mf.Bundle-Copyright}</Bundle-Copyright>
461                <Bundle-RequiredExecutionEnvironment>${mf.Bundle-RequiredExecutionEnvironment}</Bundle-RequiredExecutionEnvironment>
462              </manifestEntries>
463            </archive>
464          </configuration>
465        </plugin>
466        <plugin>
467          <groupId>org.codehaus.mojo</groupId>
468          <artifactId>exec-maven-plugin</artifactId>
469          <version>3.4.1</version>
470        </plugin>
471      </plugins>
472    </pluginManagement>
473
474    <plugins>
475      <plugin>
476        <groupId>org.apache.maven.plugins</groupId>
477        <artifactId>maven-enforcer-plugin</artifactId>
478      </plugin>
479      <plugin>
480        <groupId>org.codehaus.mojo</groupId>
481        <artifactId>build-helper-maven-plugin</artifactId>
482      </plugin>
483    </plugins>
484
485  </build>
486
487  <profiles>
488
489    <!-- This is used to create the *-sources.jar for individual modules -->
490    <profile>
491      <id>with_sources</id>
492      <build>
493        <plugins>
494          <plugin>
495            <artifactId>maven-source-plugin</artifactId>
496            <executions>
497              <execution>
498                <id>attach-sources</id>
499                <goals>
500                  <goal>jar-no-fork</goal>
501                </goals>
502              </execution>
503            </executions>
504            <configuration>
505              <excludes>
506                <exclude>/com/ibm/icu/impl/data/icudata/**</exclude>
507                <exclude>/com/ibm/icu/impl/duration/impl/data/*.xml</exclude>
508                <exclude>/com/ibm/icu/impl/duration/impl/data/*.xml.escaped</exclude>
509                <exclude>/com/ibm/icu/impl/duration/impl/data/*.txt</exclude>
510                <exclude>/com/ibm/icu/ICUConfig.properties</exclude>
511                <exclude>/**/package.html</exclude>
512              </excludes>
513            </configuration>
514          </plugin>
515        </plugins>
516      </build>
517    </profile>
518
519    <!-- This is used to create the *-javadoc.jar for individual modules -->
520    <profile>
521      <id>with_javadoc</id>
522      <build>
523        <plugins>
524          <plugin>
525            <artifactId>maven-javadoc-plugin</artifactId>
526            <executions>
527              <execution>
528                <id>attach-javadocs</id>
529                <goals>
530                  <goal>jar</goal>
531                </goals>
532              </execution>
533            </executions>
534          </plugin>
535        </plugins>
536      </build>
537    </profile>
538
539    <profile>
540      <id>with_signature</id>
541      <build>
542        <plugins>
543          <plugin>
544            <artifactId>maven-gpg-plugin</artifactId>
545            <executions>
546              <execution>
547                <id>sign-artifacts</id>
548                <phase>verify</phase>
549                <goals>
550                  <goal>sign</goal>
551                </goals>
552                <configuration>
553                  <keyname>${gpg-keyname}</keyname>
554                  <passphraseServerId>${gpg-keyname}</passphraseServerId>
555                  <gpgArguments>
556                    <arg>--pinentry-mode</arg>
557                    <arg>loopback</arg>
558                  </gpgArguments>
559                </configuration>
560              </execution>
561            </executions>
562          </plugin>
563        </plugins>
564      </build>
565    </profile>
566
567    <!-- This is used to create "merged" javadoc for all modules combined.
568      Matches what is posted on a website (where icu4j / charset / localespi are all in one).
569      That's why you need to run this with `site`, but build the artifacts first (for the taglets):
570        mvn install -DskipTests -DskipITs
571        mvn site -DskipTests -DskipITs -P with_full_javadoc
572    -->
573    <profile>
574      <id>with_full_javadoc</id>
575      <build>
576        <plugins>
577          <plugin>
578            <artifactId>maven-javadoc-plugin</artifactId>
579            <executions>
580              <execution>
581                <id>aggregate</id>
582                <phase>site</phase>
583                <goals>
584                  <goal>aggregate</goal>
585                </goals>
586              </execution>
587            </executions>
588          </plugin>
589        </plugins>
590      </build>
591    </profile>
592
593    <!-- This is used to gather API data used to generate API reports
594      (regular, draft, deprecated, status consistency, etc.)
595      To run it:
596        mvn install -DskipITs -DskipTests
597        mvn site -DskipITs -DskipTests -P gatherapi
598    -->
599    <profile>
600      <id>gatherapi</id>
601      <build>
602        <plugins>
603          <plugin>
604            <artifactId>maven-javadoc-plugin</artifactId>
605            <executions>
606              <execution>
607                <id>aggregate</id>
608                <phase>site</phase>
609                <goals>
610                  <goal>aggregate</goal>
611                </goals>
612              </execution>
613            </executions>
614            <configuration>
615              <!-- For incomplete doc tags javadoc fails with:
616                  ```
617                  Error while creating javadoc report:
618                  Exit code: 1
619                  Command line was: ...
620                  Refer to the generated Javadoc files in '...' dir.
621                  ```
622                But in most cases these are not related to what we do here, which is API reporting.
623                We ignore them so that we can progess with what we really care.
624              -->
625              <failOnError>false</failOnError>
626              <useStandardDocletOptions>false</useStandardDocletOptions>
627              <doclet>com.ibm.icu.dev.tool.docs.GatherAPIData</doclet>
628              <docletArtifact>
629                <groupId>com.ibm.icu</groupId>
630                <artifactId>tools_build</artifactId>
631                <version>${project.version}</version>
632              </docletArtifact>
633              <additionalOptions>
634                <additionalOption>-name 'ICU4J ${mf.Implementation-Version}'</additionalOption>
635                <additionalOption>-output ${project.build.directory}/icu4j${icu4j.api.report.version}.api3</additionalOption>
636                <additionalOption>-internal</additionalOption>
637                <additionalOption>-version</additionalOption>
638                <additionalOption>-gzip</additionalOption>
639              </additionalOptions>
640            </configuration>
641          </plugin>
642        </plugins>
643      </build>
644    </profile>
645
646    <!-- The tools/build module depends on the old tools.jar (jdk 1.8)
647      The com.sun.javadoc package was deprecated in Java 11, and has been removed for Java 17.
648      JDK 11 does not include tools.jar anymore. The code must be updated, see migration guide at
649        https://docs.oracle.com/en/java/javase/11/docs/api/jdk.javadoc/jdk/javadoc/doclet/package-summary.html#migration
650    -->
651    <profile>
652      <id>old_jdk_taglet</id>
653      <activation>
654        <jdk>[1.7,1.8]</jdk>
655      </activation>
656      <modules>
657         <module>tools/build</module>
658      </modules>
659    </profile>
660
661    <!-- Starting with JDK 9, the Java compiler supports the −−release version.
662      Unlike source (checking the language features) and target (the version of the classes generated),
663      this option also checks that newer APIs are not used.
664        https://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-release.html
665      Would be nice if the maven-compiler-plugin would filter this out below JDK 9, but it does not.
666      So we must use an auto-activated profile for this option.
667    -->
668    <profile>
669      <id>newer_jdk</id>
670      <activation>
671        <jdk>[9,)</jdk>
672      </activation>
673      <build>
674        <plugins>
675          <plugin>
676            <artifactId>maven-compiler-plugin</artifactId>
677            <configuration>
678              <release>8</release>
679            </configuration>
680          </plugin>
681        </plugins>
682      </build>
683    </profile>
684
685    <profile>
686      <!-- mvn test -ntp -DskipTests -DskipITs -P errorprone -->
687      <id>errorprone</id>
688      <build>
689        <plugins>
690          <plugin>
691            <groupId>org.apache.maven.plugins</groupId>
692            <artifactId>maven-compiler-plugin</artifactId>
693            <configuration>
694              <source>${maven.compiler.source}</source>
695              <target>${maven.compiler.target}</target>
696              <encoding>UTF-8</encoding>
697              <!-- Use <compilerArg> to pass flags to errorprone. See https://errorprone.info/docs/flags -->
698              <showWarnings>true</showWarnings>
699              <compilerArgs>
700                <arg>-XDcompilePolicy=simple</arg>
701                <!--
702                  -XepAllErrorsAsWarnings:
703                    If we let errors be errors they fail and stop the build, so we don't get a full report.
704                    So we force them all to be reported as warning.
705                    The drawback is that there are not errors now, they get mixed with the real warnings.
706                -->
707                <arg>-Xplugin:ErrorProne -XepAllErrorsAsWarnings</arg>
708              </compilerArgs>
709              <annotationProcessorPaths>
710                <path>
711                  <groupId>com.google.errorprone</groupId>
712                  <artifactId>error_prone_core</artifactId>
713                  <version>2.25.0</version>
714                </path>
715              </annotationProcessorPaths>
716            </configuration>
717          </plugin>
718        </plugins>
719      </build>
720    </profile>
721
722    <profile>
723        <id>release_files</id>
724        <build>
725            <plugins>
726                <plugin>
727                    <artifactId>maven-dependency-plugin</artifactId>
728                    <configuration>
729                        <outputDirectory>${release.directory}</outputDirectory>
730                        <overWriteReleases>true</overWriteReleases>
731                        <overWriteSnapshots>true</overWriteSnapshots>
732                        <artifactItems>
733                        <!-- icu4j -->
734                        <artifactItem>
735                            <groupId>com.ibm.icu</groupId>
736                            <artifactId>icu4j</artifactId>
737                            <version>${project.version}</version>
738                        </artifactItem>
739                        <artifactItem>
740                            <groupId>com.ibm.icu</groupId>
741                            <artifactId>icu4j</artifactId>
742                            <version>${project.version}</version>
743                            <classifier>sources</classifier>
744                        </artifactItem>
745                        <artifactItem>
746                            <groupId>com.ibm.icu</groupId>
747                            <artifactId>icu4j</artifactId>
748                            <version>${project.version}</version>
749                            <classifier>javadoc</classifier>
750                        </artifactItem>
751                        <!-- icu4j-charset -->
752                        <artifactItem>
753                            <groupId>com.ibm.icu</groupId>
754                            <artifactId>icu4j-charset</artifactId>
755                            <version>${project.version}</version>
756                        </artifactItem>
757                        <artifactItem>
758                            <groupId>com.ibm.icu</groupId>
759                            <artifactId>icu4j-charset</artifactId>
760                            <version>${project.version}</version>
761                            <classifier>sources</classifier>
762                        </artifactItem>
763                        <artifactItem>
764                            <groupId>com.ibm.icu</groupId>
765                            <artifactId>icu4j-charset</artifactId>
766                            <version>${project.version}</version>
767                            <classifier>javadoc</classifier>
768                        </artifactItem>
769                        <!-- icu4j-localespi -->
770                        <artifactItem>
771                            <groupId>com.ibm.icu</groupId>
772                            <artifactId>icu4j-localespi</artifactId>
773                            <version>${project.version}</version>
774                        </artifactItem>
775                        <artifactItem>
776                            <groupId>com.ibm.icu</groupId>
777                            <artifactId>icu4j-localespi</artifactId>
778                            <version>${project.version}</version>
779                            <classifier>sources</classifier>
780                        </artifactItem>
781                        <artifactItem>
782                            <groupId>com.ibm.icu</groupId>
783                            <artifactId>icu4j-localespi</artifactId>
784                            <version>${project.version}</version>
785                            <classifier>javadoc</classifier>
786                        </artifactItem>
787                        </artifactItems>
788                    </configuration>
789                </plugin>
790            </plugins>
791        </build>
792    </profile>
793  </profiles>
794
795</project>
796