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><font size=-1>Copyright © 2016 Unicode, Inc. and others.</font></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 & 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