<?xml version="1.0" encoding="UTF-8"?>
<!--
* © 2016 and later: Unicode, Inc. and others.
* License & terms of use: http://www.unicode.org/copyright.html
-->
<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">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.ibm.icu</groupId>
  <artifactId>icu4j-root</artifactId>
  <version>77.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>${proj-title} (${project.artifactId})</name>
  <description>International Components for Unicode for Java (ICU4J) is a mature, widely used Java library
    providing Unicode and Globalization support.
    This is the base artifact with common settings, not intended to use directly.</description>
  <url>${proj.url}</url>
  <inceptionYear>1995</inceptionYear>

  <organization>
    <name>Unicode, Inc.</name>
    <url>https://icu.unicode.org/</url>
  </organization>

  <modules>
    <module>main/framework</module>
    <module>main/core</module>
    <!-- For publishing to Maven Central -->
    <module>main/charset</module>
    <module>main/collate</module>
    <module>main/currdata</module>
    <module>main/langdata</module>
    <module>main/regiondata</module>
    <module>main/translit</module>
    <module>main/common_tests</module>
    <!-- Shaded jar for publishing to Maven Central -->
    <module>main/icu4j</module>
    <!-- For publishing to Maven Central. Not shaded, but depends on the shaded artifacts above.
         Also contains all the project properties (developers, scm, etc) needed for maven publishing.
    -->
    <module>main/localespi</module>

    <module>demos</module>
    <module>samples</module>
    <module>tools/misc</module>
    <module>perf-tests</module>
  </modules>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>

    <maven-central-repo-url>https://oss.sonatype.org</maven-central-repo-url>
    <maven-central-releases-repo-url>${maven-central-repo-url}/service/local/staging/deploy/maven2</maven-central-releases-repo-url>
    <maven-central-snapshots-repo-url>${maven-central-repo-url}/content/repositories/snapshots</maven-central-snapshots-repo-url>

    <!-- This is the folder where we gather the files to be posted in the Github Release-->
    <release.directory>${project.build.directory}/release_directory</release.directory>

    <junit.version>4.13.2</junit.version>
    <junitparams.version>1.1.1</junitparams.version>
    <gson.version>2.11.0</gson.version>
    <commons-cli.version>1.9.0</commons-cli.version>

    <proj-title>International Components for Unicode for Java</proj-title>
    <proj.displayname>${project.artifactId}</proj.displayname>
    <proj.url>https://icu.unicode.org/</proj.url>
    <proj.scm.connection>scm:git:git://github.com/unicode-org/icu.git</proj.scm.connection>
    <proj.scm.developerConnection>scm:git:git@github.com:unicode-org/icu.git</proj.scm.developerConnection>
    <proj.scm.url>https://github.com/unicode-org/icu</proj.scm.url>

    <!-- Version update! -->
    <icu.major.version>77</icu.major.version>

    <!-- Variables used to generate the javadoc -->
    <!-- Version update! -->
    <api.doc.version>${icu.major.version}</api.doc.version>
    <icu4j.api.doc.window.title>ICU4J ${api.doc.version}</icu4j.api.doc.window.title>
    <icu4j.api.doc.header>ICU4J ${api.doc.version}</icu4j.api.doc.header>
    <icu4j.api.doc.copyright.footer>&lt;font size=-1&gt;Copyright © 2016 Unicode, Inc. and others.&lt;/font&gt;</icu4j.api.doc.copyright.footer>

    <!-- Needs to be overriden in sub-modules -->
    <icu4j.api.doc.root.dir>${project.basedir}</icu4j.api.doc.root.dir>
    <icu4j.api.report.version>${icu.major.version}</icu4j.api.report.version>

    <!-- Used for the .jar Manifest files -->
    <mf.Specification-Version>${icu.major.version}</mf.Specification-Version>
    <mf.Implementation-Version>${project.version}</mf.Implementation-Version>
    <mf.Bundle-Version>${project.version}</mf.Bundle-Version>
    <mf.Bundle-RequiredExecutionEnvironment>JavaSE-1.8</mf.Bundle-RequiredExecutionEnvironment>

    <!-- For most modules artifactId does not have an "icu4j" prefix, so this is a good default -->
    <module-name>${project.artifactId}</module-name>

    <!-- Manifest fields that rarely change, if ever -->
    <mf.Specification-Title>${proj-title} (${proj.displayname})</mf.Specification-Title>
    <mf.Implementation-Title>${proj-title} (${proj.displayname})</mf.Implementation-Title>
    <mf.Bundle-Description>${proj-title} (${proj.displayname})</mf.Bundle-Description>
    <mf.Bundle-SymbolicName>com.ibm.icu.${module-name}</mf.Bundle-SymbolicName>
    <mf.Automatic-Module-Name>com.ibm.icu.${module-name}</mf.Automatic-Module-Name>
    <mf.Bundle-Name>ICU4J ${proj.displayname}</mf.Bundle-Name>

    <mf.Specification-Vendor>Unicode, Inc.</mf.Specification-Vendor>
    <mf.Implementation-Vendor>Unicode, Inc.</mf.Implementation-Vendor>
    <mf.Bundle-Vendor>Unicode, Inc.</mf.Bundle-Vendor>
    <mf.Implementation-Vendor-Id>org.unicode</mf.Implementation-Vendor-Id>
    <mf.Manifest-Version>1.0</mf.Manifest-Version>
    <mf.Bundle-ManifestVersion>2</mf.Bundle-ManifestVersion>
    <mf.Bundle-Copyright>© 2016 and later: Unicode, Inc. and others. License &amp; terms of use: http://www.unicode.org/copyright.html</mf.Bundle-Copyright>
  </properties>

  <licenses>
    <license>
      <name>Unicode-3.0</name>
      <url>https://raw.githubusercontent.com/unicode-org/icu/maint/maint-${icu.major.version}/LICENSE</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <developers>
    <developer>
      <id>markusicu</id> <!-- GitHub ID -->
      <name>Markus Scherer</name>
      <organization>Google</organization>
      <roles>
        <role>Chair</role>
      </roles>
    </developer>
    <developer>
      <id>richgillam</id> <!-- GitHub ID -->
      <name>Richard Gillam</name>
      <roles>
        <role>Vice chair</role>
      </roles>
    </developer>
  </developers>

  <mailingLists>
    <mailingList>
      <name>icu-support</name>
      <subscribe>https://lists.sourceforge.net/lists/listinfo/icu-support</subscribe>
      <unsubscribe>https://lists.sourceforge.net/lists/listinfo/icu-support</unsubscribe>
      <post>icu-support@lists.sourceforge.net</post>
      <archive>http://sourceforge.net/mailarchive/forum.php?forum_name=icu-support</archive>
    </mailingList>
    <mailingList>
      <name>icu-announce</name>
      <subscribe>https://lists.sourceforge.net/lists/listinfo/icu-announce</subscribe>
      <unsubscribe>https://lists.sourceforge.net/lists/listinfo/icu-announce</unsubscribe>
      <post>icu-announce@lists.sourceforge.net</post>
      <archive>http://sourceforge.net/mailarchive/forum.php?forum_name=icu-announce</archive>
    </mailingList>
    <mailingList>
      <name>icu-design</name>
      <subscribe>https://lists.sourceforge.net/lists/listinfo/icu-design</subscribe>
      <unsubscribe>https://lists.sourceforge.net/lists/listinfo/icu-design</unsubscribe>
      <post>icu-design@lists.sourceforge.net</post>
      <archive>http://sourceforge.net/mailarchive/forum.php?forum_name=icu-design</archive>
    </mailingList>
  </mailingLists>

  <scm>
    <connection>${proj.scm.connection}</connection>
    <developerConnection>${proj.scm.developerConnection}</developerConnection>
    <url>${proj.scm.url}</url>
  </scm>

  <issueManagement>
    <system>JIRA</system>
    <url>https://unicode-org.atlassian.net/projects/ICU</url>
  </issueManagement>

  <distributionManagement>
    <repository>
      <id>icu4j-maven-repo</id>
      <name>ICU4J Central Repository</name>
      <url>${maven-central-releases-repo-url}</url>
    </repository>
    <snapshotRepository>
      <id>icu4j-maven-repo</id>
      <name>ICU4J Central Development Repository</name>
      <url>${maven-central-snapshots-repo-url}</url>
    </snapshotRepository>
  </distributionManagement>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.4.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.3.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.13.0</version>
          <!-- Plugin bug, maven.compiler.* properties are not honored, see
            https://issues.apache.org/jira/browse/MCOMPILER-545
          -->
          <configuration>
            <source>${maven.compiler.source}</source>
            <target>${maven.compiler.target}</target>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.4.0</version>
          <configuration>
            <includes>
              <!-- Some test files start with "IntlTest...". Many don't fit
                the Surefire test file name default patterns. To be safe, use
                a catchall pattern instead of the default patterns.

                FYI, the default patterns are documented on the website of the
                testing plugin:
                https://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html
              -->
              <include>**/*.java</include>
            </includes>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>3.4.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>3.1.3</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.1.3</version>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>4.0.0-M16</version>
        </plugin>
        <plugin>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.3.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>3.2.5</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.7.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.6.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>3.6.0</version>
          <executions>
            <execution>
              <!-- Workaround for Windows symlink issue:
                 https://issues.apache.org/jira/browse/MRESOURCES-237
                 Note: The recommended fix there is to filter out the symlink files, which
                 would result in no license files in the .jar. That is not what we want.
                 Instead, this `<execution>` config copies the LICENSE file to `target` at build time.
              -->
              <id>add-resource</id>
              <goals>
                <goal>add-resource</goal>
              </goals>
              <configuration>
                <resources>
                  <resource>
                    <directory>${rootlocation}/../testdata/</directory>
                    <includes>
                      <!-- Do not "repair" this to use ${rootlocation}/../ and LICENSE.
                        This is a workaround for Eclipse, which fails to import the projects because
                        ${rootlocation}/../ overlaps with the location of the sub-projects (for example main/core).
                        True, because {rootlocation} is resolved to $icu_root/icu4j.
                        So ${rootlocation}/../ points to $icu_root, which overlaps with $icu_root/icu4j/main/core.
                        But $icu_root/testdata/ does not overlap with $icu_root/icu4j/ so all is good.
                        We then go up one step for the LICENSE, because Eclipse does not validate for files overlapping, only folders.
                      -->
                      <include>../LICENSE</include>
                    </includes>
                  </resource>
                </resources>
              </configuration>
            </execution>
            <execution>
              <id>root-location</id>
              <phase>initialize</phase>
              <goals>
                <goal>rootlocation</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-release-plugin</artifactId>
          <version>3.1.1</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>flatten-maven-plugin</artifactId>
          <version>1.6.0</version>
          <configuration>
            <flattenMode>ossrh</flattenMode>
          </configuration>
          <executions>
            <execution>
              <id>flatten</id>
              <phase>process-resources</phase>
              <goals>
                <goal>flatten</goal>
              </goals>
            </execution>
            <execution>
              <id>flatten.clean</id>
              <phase>clean</phase>
              <goals>
                <goal>clean</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>3.5.0</version>
          <executions>
            <execution>
              <id>enforce-maven</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <requireMavenVersion>
                    <version>3.6.3</version>
                  </requireMavenVersion>
                </rules>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.8.0</version>
          <configuration>
            <excludePackageNames>com.ibm.icu.impl,com.ibm.icu.impl.*,com.ibm.icu.dev.*,com.ibm.icu.samples,com.ibm.icu.samples.*</excludePackageNames>
            <!--
              The ant project specified <doclint>reference,html</doclint>.
              But that fails in main\core\src\main\java because maven enforces dependencies more strictly:
                [ERROR] com\ibm\icu\text\UnicodeFilter.java:15: error: reference not found
                [ERROR]  * {@link com.ibm.icu.text.Transliterator}
                [ERROR] com\ibm\icu\util\ULocale.java:100: error: reference not found
                [ERROR]  * {@link com.ibm.icu.text.Collator}
            -->
            <doclint>html</doclint>
            <notimestamp>true</notimestamp>
            <nodeprecatedlist>true</nodeprecatedlist>
            <quiet>true</quiet>
            <windowtitle>${icu4j.api.doc.window.title}</windowtitle>
            <doctitle>${icu4j.api.doc.window.title}</doctitle>
            <header>${icu4j.api.doc.header}</header>
            <bottom>${icu4j.api.doc.copyright.footer}</bottom>
            <stylesheetfile>${icu4j.api.doc.root.dir}/stylesheet8.css</stylesheetfile>
            <encoding>UTF-8</encoding>
            <docencoding>UTF-8</docencoding>
            <charset>UTF-8</charset>
            <breakiterator>true</breakiterator>
            <use>true</use>
            <maxmemory>256m</maxmemory>
            <minmemory>256m</minmemory>
            <!-- <verbose>true</verbose> -->
            <additionalJOptions>
              <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>
              <additionalJOption>-J-Dfile.encoding=UTF-8</additionalJOption>
              <additionalJOption>-J-Djciteverbose=true</additionalJOption>
            </additionalJOptions>
            <taglets>
              <taglet>
                <tagletClass>com.ibm.icu.dev.tool.docs.ICUTaglet</tagletClass>
              </taglet>
              <taglet>
                <tagletClass>ch.arrenbrecht.jcite.JCiteTaglet</tagletClass>
              </taglet>
            </taglets>
            <tagletArtifacts>
              <!-- To handle the ICU custom taglets (@icu, @draft, @stable, etc -->
              <tagletArtifact>
                <groupId>com.ibm.icu</groupId>
                <artifactId>tools_build</artifactId>
                <version>${project.version}</version>
              </tagletArtifact>
              <!-- Include code fragments from a .java file. -->
              <tagletArtifact>
                <groupId>org.mcraig</groupId>
                <artifactId>jcite</artifactId>
                <version>1.13.0</version>
              </tagletArtifact>
              <!-- Dependencies for org.mcraig:jcite -->
              <tagletArtifact>
                <groupId>commons-discovery</groupId>
                <artifactId>commons-discovery</artifactId>
                <version>0.5</version>
              </tagletArtifact>
              <tagletArtifact>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.2</version>
              </tagletArtifact>
            </tagletArtifacts>
            <tags>
              <tag>
                <name>category</name>
                <placement>a</placement>
                <head>Category:</head>
              </tag>
            </tags>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.4.2</version>
          <configuration>
            <archive>
              <manifest>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
              </manifest>
              <manifestEntries>
                <Automatic-Module-Name>${mf.Automatic-Module-Name}</Automatic-Module-Name>
                <Bundle-Copyright>${mf.Bundle-Copyright}</Bundle-Copyright>
                <Specification-Title>${mf.Specification-Title}</Specification-Title>
                <Specification-Version>${mf.Specification-Version}</Specification-Version>
                <Specification-Vendor>${mf.Specification-Vendor}</Specification-Vendor>
                <Implementation-Title>${mf.Implementation-Title}</Implementation-Title>
                <Implementation-Version>${mf.Implementation-Version}</Implementation-Version>
                <Implementation-Vendor>${mf.Implementation-Vendor}</Implementation-Vendor>
                <Implementation-Vendor-Id>${mf.Implementation-Vendor-Id}</Implementation-Vendor-Id>
                <Bundle-ManifestVersion>${mf.Bundle-ManifestVersion}</Bundle-ManifestVersion>
                <Bundle-Name>${mf.Bundle-Name}</Bundle-Name>
                <Bundle-Description>${mf.Bundle-Description}</Bundle-Description>
                <Bundle-SymbolicName>${mf.Bundle-SymbolicName}</Bundle-SymbolicName>
                <Bundle-Version>${mf.Bundle-Version}</Bundle-Version>
                <Bundle-Vendor>${mf.Bundle-Vendor}</Bundle-Vendor>
                <Bundle-Copyright>${mf.Bundle-Copyright}</Bundle-Copyright>
                <Bundle-RequiredExecutionEnvironment>${mf.Bundle-RequiredExecutionEnvironment}</Bundle-RequiredExecutionEnvironment>
              </manifestEntries>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>3.4.1</version>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
      </plugin>
    </plugins>

  </build>

  <profiles>

    <!-- This is used to create the *-sources.jar for individual modules -->
    <profile>
      <id>with_sources</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <excludes>
                <exclude>/com/ibm/icu/impl/data/icudata/**</exclude>
                <exclude>/com/ibm/icu/impl/duration/impl/data/*.xml</exclude>
                <exclude>/com/ibm/icu/impl/duration/impl/data/*.xml.escaped</exclude>
                <exclude>/com/ibm/icu/impl/duration/impl/data/*.txt</exclude>
                <exclude>/com/ibm/icu/ICUConfig.properties</exclude>
                <exclude>/**/package.html</exclude>
              </excludes>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- This is used to create the *-javadoc.jar for individual modules -->
    <profile>
      <id>with_javadoc</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>with_signature</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-gpg-plugin</artifactId>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
                <configuration>
                  <keyname>${gpg-keyname}</keyname>
                  <passphraseServerId>${gpg-keyname}</passphraseServerId>
                  <gpgArguments>
                    <arg>--pinentry-mode</arg>
                    <arg>loopback</arg>
                  </gpgArguments>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- This is used to create "merged" javadoc for all modules combined.
      Matches what is posted on a website (where icu4j / charset / localespi are all in one).
      That's why you need to run this with `site`, but build the artifacts first (for the taglets):
        mvn install -DskipTests -DskipITs
        mvn site -DskipTests -DskipITs -P with_full_javadoc
    -->
    <profile>
      <id>with_full_javadoc</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>aggregate</id>
                <phase>site</phase>
                <goals>
                  <goal>aggregate</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- This is used to gather API data used to generate API reports
      (regular, draft, deprecated, status consistency, etc.)
      To run it:
        mvn install -DskipITs -DskipTests
        mvn site -DskipITs -DskipTests -P gatherapi
    -->
    <profile>
      <id>gatherapi</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>aggregate</id>
                <phase>site</phase>
                <goals>
                  <goal>aggregate</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <!-- For incomplete doc tags javadoc fails with:
                  ```
                  Error while creating javadoc report:
                  Exit code: 1
                  Command line was: ...
                  Refer to the generated Javadoc files in '...' dir.
                  ```
                But in most cases these are not related to what we do here, which is API reporting.
                We ignore them so that we can progess with what we really care.
              -->
              <failOnError>false</failOnError>
              <useStandardDocletOptions>false</useStandardDocletOptions>
              <doclet>com.ibm.icu.dev.tool.docs.GatherAPIData</doclet>
              <docletArtifact>
                <groupId>com.ibm.icu</groupId>
                <artifactId>tools_build</artifactId>
                <version>${project.version}</version>
              </docletArtifact>
              <additionalOptions>
                <additionalOption>-name 'ICU4J ${mf.Implementation-Version}'</additionalOption>
                <additionalOption>-output ${project.build.directory}/icu4j${icu4j.api.report.version}.api3</additionalOption>
                <additionalOption>-internal</additionalOption>
                <additionalOption>-version</additionalOption>
                <additionalOption>-gzip</additionalOption>
              </additionalOptions>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- The tools/build module depends on the old tools.jar (jdk 1.8)
      The com.sun.javadoc package was deprecated in Java 11, and has been removed for Java 17.
      JDK 11 does not include tools.jar anymore. The code must be updated, see migration guide at
        https://docs.oracle.com/en/java/javase/11/docs/api/jdk.javadoc/jdk/javadoc/doclet/package-summary.html#migration
    -->
    <profile>
      <id>old_jdk_taglet</id>
      <activation>
        <jdk>[1.7,1.8]</jdk>
      </activation>
      <modules>
         <module>tools/build</module>
      </modules>
    </profile>

    <!-- Starting with JDK 9, the Java compiler supports the −−release version.
      Unlike source (checking the language features) and target (the version of the classes generated),
      this option also checks that newer APIs are not used.
        https://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-release.html
      Would be nice if the maven-compiler-plugin would filter this out below JDK 9, but it does not.
      So we must use an auto-activated profile for this option.
    -->
    <profile>
      <id>newer_jdk</id>
      <activation>
        <jdk>[9,)</jdk>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <release>8</release>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <!-- mvn test -ntp -DskipTests -DskipITs -P errorprone -->
      <id>errorprone</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <source>${maven.compiler.source}</source>
              <target>${maven.compiler.target}</target>
              <encoding>UTF-8</encoding>
              <!-- Use <compilerArg> to pass flags to errorprone. See https://errorprone.info/docs/flags -->
              <showWarnings>true</showWarnings>
              <compilerArgs>
                <arg>-XDcompilePolicy=simple</arg>
                <!--
                  -XepAllErrorsAsWarnings:
                    If we let errors be errors they fail and stop the build, so we don't get a full report.
                    So we force them all to be reported as warning.
                    The drawback is that there are not errors now, they get mixed with the real warnings.
                -->
                <arg>-Xplugin:ErrorProne -XepAllErrorsAsWarnings</arg>
              </compilerArgs>
              <annotationProcessorPaths>
                <path>
                  <groupId>com.google.errorprone</groupId>
                  <artifactId>error_prone_core</artifactId>
                  <version>2.25.0</version>
                </path>
              </annotationProcessorPaths>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
        <id>release_files</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <configuration>
                        <outputDirectory>${release.directory}</outputDirectory>
                        <overWriteReleases>true</overWriteReleases>
                        <overWriteSnapshots>true</overWriteSnapshots>
                        <artifactItems>
                        <!-- icu4j -->
                        <artifactItem>
                            <groupId>com.ibm.icu</groupId>
                            <artifactId>icu4j</artifactId>
                            <version>${project.version}</version>
                        </artifactItem>
                        <artifactItem>
                            <groupId>com.ibm.icu</groupId>
                            <artifactId>icu4j</artifactId>
                            <version>${project.version}</version>
                            <classifier>sources</classifier>
                        </artifactItem>
                        <artifactItem>
                            <groupId>com.ibm.icu</groupId>
                            <artifactId>icu4j</artifactId>
                            <version>${project.version}</version>
                            <classifier>javadoc</classifier>
                        </artifactItem>
                        <!-- icu4j-charset -->
                        <artifactItem>
                            <groupId>com.ibm.icu</groupId>
                            <artifactId>icu4j-charset</artifactId>
                            <version>${project.version}</version>
                        </artifactItem>
                        <artifactItem>
                            <groupId>com.ibm.icu</groupId>
                            <artifactId>icu4j-charset</artifactId>
                            <version>${project.version}</version>
                            <classifier>sources</classifier>
                        </artifactItem>
                        <artifactItem>
                            <groupId>com.ibm.icu</groupId>
                            <artifactId>icu4j-charset</artifactId>
                            <version>${project.version}</version>
                            <classifier>javadoc</classifier>
                        </artifactItem>
                        <!-- icu4j-localespi -->
                        <artifactItem>
                            <groupId>com.ibm.icu</groupId>
                            <artifactId>icu4j-localespi</artifactId>
                            <version>${project.version}</version>
                        </artifactItem>
                        <artifactItem>
                            <groupId>com.ibm.icu</groupId>
                            <artifactId>icu4j-localespi</artifactId>
                            <version>${project.version}</version>
                            <classifier>sources</classifier>
                        </artifactItem>
                        <artifactItem>
                            <groupId>com.ibm.icu</groupId>
                            <artifactId>icu4j-localespi</artifactId>
                            <version>${project.version}</version>
                            <classifier>javadoc</classifier>
                        </artifactItem>
                        </artifactItems>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
  </profiles>

</project>
