| <?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>icu-root</artifactId> |
| <version>79.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>icu4j</module> |
| </modules> |
| |
| <properties> |
| <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
| <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> |
| <maven.compiler.release>11</maven.compiler.release> |
| |
| <maven-central-repo-url>https://central.sonatype.com</maven-central-repo-url> |
| <maven-central-releases-repo-url>${maven-central-repo-url}</maven-central-releases-repo-url> |
| <maven-central-snapshots-repo-url>${maven-central-repo-url}/repository/maven-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> |
| |
| <!-- |
| Report dependencies and plugins that have updates: |
| mvn versions:display-property-updates -Dmaven.version.ignore=".*alpha.*,.*beta.*" | grep " -> " | sort -u |
| Please update the maven.version.ignore if some other non-release versions show up. |
| --> |
| |
| <!-- Dependencies versions --> |
| <commons-cli.version>1.9.0</commons-cli.version> |
| <error_prone.version>2.25.0</error_prone.version> |
| <gson.version>2.11.0</gson.version> |
| <guava.version>32.1.1-jre</guava.version> |
| <jmh.version>1.37</jmh.version> |
| <junit.version>4.13.2</junit.version> |
| <junitparams.version>1.1.1</junitparams.version> |
| <truth.version>1.4.4</truth.version> |
| <xalan.version>2.7.2</xalan.version> |
| <xerces.version>2.12.2</xerces.version> |
| <xml-apis.version>1.4.01</xml-apis.version> |
| <!-- Dependencies versions - END --> |
| |
| <!-- Plugin versions --> |
| <build-helper-maven-plugin.version>3.6.0</build-helper-maven-plugin.version> |
| <central-publishing-maven-plugin.version>0.8.0</central-publishing-maven-plugin.version> |
| <exec-maven-plugin.version>3.4.1</exec-maven-plugin.version> |
| <flatten-maven-plugin.version>1.6.0</flatten-maven-plugin.version> |
| <google-java-style.version>1.32.0</google-java-style.version> |
| <maven-assembly-plugin.version>3.7.1</maven-assembly-plugin.version> |
| <maven-clean-plugin.version>3.4.0</maven-clean-plugin.version> |
| <maven-compiler-plugin.version>3.14.0</maven-compiler-plugin.version> |
| <maven-dependency-plugin.version>3.8.0</maven-dependency-plugin.version> |
| <maven-deploy-plugin.version>3.1.3</maven-deploy-plugin.version> |
| <maven-enforcer-plugin.version>3.5.0</maven-enforcer-plugin.version> |
| <maven-failsafe-plugin.version>3.4.0</maven-failsafe-plugin.version> |
| <maven-gpg-plugin.version>3.2.5</maven-gpg-plugin.version> |
| <maven-install-plugin.version>3.1.3</maven-install-plugin.version> |
| <maven-jar-plugin.version>3.4.2</maven-jar-plugin.version> |
| <maven-javadoc-plugin.version>3.11.2</maven-javadoc-plugin.version> |
| <maven-pmd-plugin.version>3.27.0</maven-pmd-plugin.version> |
| <maven-project-info-reports-plugin.version>3.7.0</maven-project-info-reports-plugin.version> |
| <maven-release-plugin.version>3.1.1</maven-release-plugin.version> |
| <maven-resources-plugin.version>3.3.1</maven-resources-plugin.version> |
| <maven-shade-plugin.version>3.6.0</maven-shade-plugin.version> |
| <maven-site-plugin.version>4.0.0-M16</maven-site-plugin.version> |
| <maven-source-plugin.version>3.3.1</maven-source-plugin.version> |
| <maven-surefire-plugin.version>3.4.0</maven-surefire-plugin.version> |
| <!-- We need at least 3.5.1 to avoid https://github.com/codehaus-plexus/plexus-io/issues/109. |
| Once we upgrade maven-source-plugin and maven-jar-plugin to versions new enough to depend |
| on 3.5.1 or higher, we can remove this override. |
| --> |
| <plexus-io.version>3.5.1</plexus-io.version> |
| <spotless-maven-plugin.version>3.0.0</spotless-maven-plugin.version> |
| <!-- Plugin versions - END --> |
| |
| <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>79</icu.major.version> |
| |
| <!-- Variables used to generate the javadoc --> |
| <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><font size=-1>Copyright © 2016 Unicode, Inc. and others.</font></icu4j.api.doc.copyright.footer> |
| |
| <!-- Needs to be overriden in sub-modules --> |
| <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 & 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://groups.google.com/a/unicode.org/g/icu-support</subscribe> |
| <unsubscribe>https://groups.google.com/a/unicode.org/g/icu-support</unsubscribe> |
| <post>icu-support@unicode.org</post> |
| <archive>https://groups.google.com/a/unicode.org/g/icu-support</archive> |
| </mailingList> |
| <mailingList> |
| <name>icu-announce</name> |
| <subscribe>https://groups.google.com/a/unicode.org/g/icu-announce</subscribe> |
| <unsubscribe>https://groups.google.com/a/unicode.org/g/icu-announce</unsubscribe> |
| <post>icu-announce@unicode.org</post> |
| <archive>https://groups.google.com/a/unicode.org/g/icu-announce</archive> |
| </mailingList> |
| <mailingList> |
| <name>icu-design</name> |
| <subscribe>https://groups.google.com/a/unicode.org/g/icu-design</subscribe> |
| <unsubscribe>https://groups.google.com/a/unicode.org/g/icu-design</unsubscribe> |
| <post>icu-design@unicode.org</post> |
| <archive>https://groups.google.com/a/unicode.org/g/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> |
| <site> |
| <!-- We don't deploy here, but without it generating reports fails. |
| If we really try to deploy here (`site:deploy`) it will fail, |
| but `site:stage` works. |
| --> |
| <id>unicode-org.github.io</id> |
| <url>scp://https://unicode-org.github.io/</url> |
| </site> |
| <repository> |
| <id>central</id> |
| <name>ICU4J Central Repository</name> |
| <url>${maven-central-releases-repo-url}</url> |
| </repository> |
| <snapshotRepository> |
| <id>central</id> |
| <name>ICU4J Central Development Repository</name> |
| <url>${maven-central-snapshots-repo-url}</url> |
| </snapshotRepository> |
| </distributionManagement> |
| |
| <dependencyManagement> |
| <dependencies> |
| <!-- Non-test, bot only for tools, should not be used in ICU proper. --> |
| <dependency> |
| <groupId>com.google.errorprone</groupId> |
| <artifactId>error_prone_core</artifactId> |
| <version>${error_prone.version}</version> |
| </dependency> |
| <dependency> |
| <groupId>commons-cli</groupId> |
| <artifactId>commons-cli</artifactId> |
| <version>${commons-cli.version}</version> |
| </dependency> |
| <dependency> |
| <groupId>org.openjdk.jmh</groupId> |
| <artifactId>jmh-core</artifactId> |
| <version>${jmh.version}</version> |
| </dependency> |
| <dependency> |
| <groupId>org.openjdk.jmh</groupId> |
| <artifactId>jmh-generator-annprocess</artifactId> |
| <version>${jmh.version}</version> |
| </dependency> |
| |
| <!-- Test only --> |
| <dependency> |
| <groupId>com.google.code.gson</groupId> |
| <artifactId>gson</artifactId> |
| <version>${gson.version}</version> |
| <scope>test</scope> |
| </dependency> |
| <dependency> |
| <groupId>com.google.guava</groupId> |
| <artifactId>guava</artifactId> |
| <version>${guava.version}</version> |
| </dependency> |
| <dependency> |
| <groupId>com.google.truth</groupId> |
| <artifactId>truth</artifactId> |
| <version>${truth.version}</version> |
| <scope>test</scope> |
| </dependency> |
| <dependency> |
| <groupId>junit</groupId> |
| <artifactId>junit</artifactId> |
| <version>${junit.version}</version> |
| <scope>test</scope> |
| </dependency> |
| <dependency> |
| <groupId>pl.pragmatists</groupId> |
| <artifactId>JUnitParams</artifactId> |
| <version>${junitparams.version}</version> |
| <scope>test</scope> |
| </dependency> |
| </dependencies> |
| </dependencyManagement> |
| |
| <build> |
| <pluginManagement> |
| <plugins> |
| <plugin> |
| <artifactId>maven-clean-plugin</artifactId> |
| <version>${maven-clean-plugin.version}</version> |
| </plugin> |
| <plugin> |
| <artifactId>maven-resources-plugin</artifactId> |
| <version>${maven-resources-plugin.version}</version> |
| </plugin> |
| <plugin> |
| <artifactId>maven-compiler-plugin</artifactId> |
| <version>${maven-compiler-plugin.version}</version> |
| </plugin> |
| <plugin> |
| <artifactId>maven-surefire-plugin</artifactId> |
| <version>${maven-surefire-plugin.version}</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>${maven-failsafe-plugin.version}</version> |
| </plugin> |
| <plugin> |
| <artifactId>maven-install-plugin</artifactId> |
| <version>${maven-install-plugin.version}</version> |
| </plugin> |
| <plugin> |
| <artifactId>maven-deploy-plugin</artifactId> |
| <version>${maven-deploy-plugin.version}</version> |
| <configuration> |
| <skip>true</skip> |
| </configuration> |
| </plugin> |
| <plugin> |
| <!-- https://central.sonatype.org/publish/publish-portal-maven/ --> |
| <groupId>org.sonatype.central</groupId> |
| <artifactId>central-publishing-maven-plugin</artifactId> |
| <version>${central-publishing-maven-plugin.version}</version> |
| <extensions>true</extensions> |
| <configuration> |
| <checksums>required</checksums> |
| </configuration> |
| </plugin> |
| <plugin> |
| <artifactId>maven-site-plugin</artifactId> |
| <version>${maven-site-plugin.version}</version> |
| </plugin> |
| <plugin> |
| <artifactId>maven-source-plugin</artifactId> |
| <version>${maven-source-plugin.version}</version> |
| <dependencies> |
| <!-- Do not remove, see the plexus-io.version comment in the properties section --> |
| <dependency> |
| <groupId>org.codehaus.plexus</groupId> |
| <artifactId>plexus-io</artifactId> |
| <version>${plexus-io.version}</version> |
| </dependency> |
| </dependencies> |
| </plugin> |
| <plugin> |
| <artifactId>maven-gpg-plugin</artifactId> |
| <version>${maven-gpg-plugin.version}</version> |
| </plugin> |
| <plugin> |
| <artifactId>maven-project-info-reports-plugin</artifactId> |
| <version>${maven-project-info-reports-plugin.version}</version> |
| </plugin> |
| <plugin> |
| <artifactId>maven-shade-plugin</artifactId> |
| <version>${maven-shade-plugin.version}</version> |
| </plugin> |
| <plugin> |
| <artifactId>maven-assembly-plugin</artifactId> |
| <version>${maven-assembly-plugin.version}</version> |
| </plugin> |
| <plugin> |
| <artifactId>maven-dependency-plugin</artifactId> |
| <version>${maven-dependency-plugin.version}</version> |
| </plugin> |
| <plugin> |
| <groupId>org.codehaus.mojo</groupId> |
| <artifactId>build-helper-maven-plugin</artifactId> |
| <version>${build-helper-maven-plugin.version}</version> |
| <executions> |
| <execution> |
| <id>root-location</id> |
| <phase>initialize</phase> |
| <goals> |
| <goal>rootlocation</goal> |
| </goals> |
| </execution> |
| </executions> |
| </plugin> |
| <plugin> |
| <artifactId>maven-release-plugin</artifactId> |
| <version>${maven-release-plugin.version}</version> |
| </plugin> |
| <plugin> |
| <groupId>org.codehaus.mojo</groupId> |
| <artifactId>flatten-maven-plugin</artifactId> |
| <version>${flatten-maven-plugin.version}</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>${maven-enforcer-plugin.version}</version> |
| <executions> |
| <execution> |
| <id>enforce-maven</id> |
| <goals> |
| <goal>enforce</goal> |
| </goals> |
| <configuration> |
| <rules> |
| <requireMavenVersion> |
| <!-- From the Maven web site, Dec. 2025 (https://maven.apache.org/docs/history.html) |
| "Maven 3.8.9 and before has now reached its end of life and is no longer supported in any way. |
| New plugin releases will require Maven 3.9.0 or later." |
| --> |
| <version>3.9.0</version> |
| </requireMavenVersion> |
| <requireJavaVersion> |
| <version>[11,)</version> |
| </requireJavaVersion> |
| </rules> |
| </configuration> |
| </execution> |
| </executions> |
| </plugin> |
| <plugin> |
| <artifactId>maven-javadoc-plugin</artifactId> |
| <version>${maven-javadoc-plugin.version}</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> |
| <encoding>UTF-8</encoding> |
| <docencoding>UTF-8</docencoding> |
| <charset>UTF-8</charset> |
| <breakiterator>true</breakiterator> |
| <use>true</use> |
| <!-- <verbose>true</verbose> --> |
| <additionalJOptions> |
| <additionalJOption>-J-Dfile.encoding=UTF-8</additionalJOption> |
| </additionalJOptions> |
| <!-- |
| Although the Maven Javadoc plugin claims that taglets are auto-detected, |
| it does not seem to work. But listing them explicitly does. |
| --> |
| <taglets> |
| <taglet> |
| <tagletClass>com.ibm.icu.dev.tool.docs.ICUBugTaglet</tagletClass> |
| </taglet> |
| <taglet> |
| <tagletClass>com.ibm.icu.dev.tool.docs.ICUCategoryTaglet</tagletClass> |
| </taglet> |
| <taglet> |
| <tagletClass>com.ibm.icu.dev.tool.docs.ICUDiscouragedTaglet</tagletClass> |
| </taglet> |
| <taglet> |
| <tagletClass>com.ibm.icu.dev.tool.docs.ICUDraftTaglet</tagletClass> |
| </taglet> |
| <taglet> |
| <tagletClass>com.ibm.icu.dev.tool.docs.ICUEnhancedTaglet</tagletClass> |
| </taglet> |
| <taglet> |
| <tagletClass>com.ibm.icu.dev.tool.docs.ICUInternalTaglet</tagletClass> |
| </taglet> |
| <taglet> |
| <tagletClass>com.ibm.icu.dev.tool.docs.ICUNewTaglet</tagletClass> |
| </taglet> |
| <taglet> |
| <tagletClass>com.ibm.icu.dev.tool.docs.ICUNoteTaglet</tagletClass> |
| </taglet> |
| <taglet> |
| <tagletClass>com.ibm.icu.dev.tool.docs.ICUObsoleteTaglet</tagletClass> |
| </taglet> |
| <taglet> |
| <tagletClass>com.ibm.icu.dev.tool.docs.ICUProvisionalTaglet</tagletClass> |
| </taglet> |
| <taglet> |
| <tagletClass>com.ibm.icu.dev.tool.docs.ICUStableTaglet</tagletClass> |
| </taglet> |
| <taglet> |
| <tagletClass>com.ibm.icu.dev.tool.docs.ICUSummaryTaglet</tagletClass> |
| </taglet> |
| <taglet> |
| <tagletClass>com.ibm.icu.dev.tool.docs.ICUTestTaglet</tagletClass> |
| </taglet> |
| </taglets> |
| <!-- To handle the ICU custom taglets (@icu, @draft, @stable, etc --> |
| <tagletArtifact> |
| <groupId>com.ibm.icu</groupId> |
| <artifactId>tools_taglets</artifactId> |
| <version>${project.version}</version> |
| </tagletArtifact> |
| </configuration> |
| </plugin> |
| <plugin> |
| <artifactId>maven-jar-plugin</artifactId> |
| <version>${maven-jar-plugin.version}</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> |
| <dependencies> |
| <!-- Do not remove, see the plexus-io.version comment in the properties section --> |
| <dependency> |
| <groupId>org.codehaus.plexus</groupId> |
| <artifactId>plexus-io</artifactId> |
| <version>${plexus-io.version}</version> |
| </dependency> |
| </dependencies> |
| </plugin> |
| <plugin> |
| <groupId>org.codehaus.mojo</groupId> |
| <artifactId>exec-maven-plugin</artifactId> |
| <version>${exec-maven-plugin.version}</version> |
| </plugin> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-pmd-plugin</artifactId> |
| <version>${maven-pmd-plugin.version}</version> |
| <configuration> |
| <rulesets> |
| <!-- Hand-picked rules --> |
| <ruleset>tools/pmd/src/main/resources/icu4j/pmd-ruleset.xml</ruleset> |
| <!-- Uncomment the block below to enable all known checks. |
| All of these rulesets can be specified in pmd-ruleset.xml instead. |
| --> |
| <!-- |
| <ruleset>/category/java/bestpractices.xml</ruleset> |
| <ruleset>/category/java/codestyle.xml</ruleset> |
| <ruleset>/category/java/design.xml</ruleset> |
| <ruleset>/category/java/errorprone.xml</ruleset> |
| <ruleset>/category/java/multithreading.xml</ruleset> |
| <ruleset>/category/java/performance.xml</ruleset> |
| --> |
| </rulesets> |
| </configuration> |
| </plugin> |
| <!-- |
| Spotless info: |
| - How to preview what `mvn spotless:apply` will do: https://github.com/diffplug/spotless/tree/main/plugin-maven#how-do-i-preview-what-mvn-spotlessapply-will-do |
| - Apply Spotless to specific files: https://github.com/diffplug/spotless/tree/main/plugin-maven#can-i-apply-spotless-to-specific-files |
| --> |
| <plugin> |
| <groupId>com.diffplug.spotless</groupId> |
| <artifactId>spotless-maven-plugin</artifactId> |
| <version>${spotless-maven-plugin.version}</version> |
| <configuration> |
| <!-- optional: limit format enforcement to just the files changed by this feature branch --> |
| <!-- You can explicitly disable ratchet functionality by providing the value 'NONE': --> |
| <ratchetFrom>NONE</ratchetFrom> |
| <!-- define a language-specific format --> |
| <java> |
| <toggleOffOn /> |
| <!-- no need to specify files, inferred automatically, but you can if you want --> |
| <!-- apply a specific flavor of google-java-format and reflow long strings --> |
| <googleJavaFormat> |
| <!-- version of google-java-style --> |
| <version>${google-java-style.version}</version> |
| <style>AOSP</style> |
| <reflowLongStrings>false</reflowLongStrings> |
| </googleJavaFormat> |
| </java> |
| </configuration> |
| </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> |
| |
| <profile> |
| <!-- Run this in the root of the ICU project: |
| mvn clean test -DskipTests -DskipITs -P errorprone |
| --> |
| <id>errorprone</id> |
| <build> |
| <plugins> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-compiler-plugin</artifactId> |
| <configuration> |
| <showWarnings>true</showWarnings> |
| <fork>true</fork> |
| <encoding>UTF-8</encoding> |
| <!-- Use <compilerArg> to pass flags to errorprone. See https://errorprone.info/docs/flags --> |
| <compilerArgs> |
| <arg>-XDcompilePolicy=simple</arg> |
| <!-- |
| WARNING: Do not wrap the line below, it will fail on Windows. |
| See https://github.com/google/error-prone/issues/4256 |
| --> |
| <arg>-Xplugin:ErrorProne -Xep:UnicodeEscape:OFF -Xep:InvalidBlockTag:OFF -Xep:ComparableType:WARN -Xep:EqualsHashCode:WARN -Xep:SelfEquals:WARN -Xep:ReturnValueIgnored:WARN -Xep:ArrayToString:WARN -Xep:MisusedDayOfYear:WARN -Xep:SelfComparison:WARN -Xep:MisusedWeekYear:WARN -Xep:IdentityBinaryExpression:WARN</arg> |
| <arg>-Xmaxerrs</arg> |
| <arg>10000</arg> |
| <arg>-Xmaxwarns</arg> |
| <arg>10000</arg> |
| <arg>-J-Dfile.encoding=UTF-8</arg> |
| <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg> |
| <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg> |
| <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg> |
| <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg> |
| <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg> |
| <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg> |
| <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg> |
| <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg> |
| <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg> |
| <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg> |
| </compilerArgs> |
| <annotationProcessorPaths> |
| <path> |
| <groupId>com.google.errorprone</groupId> |
| <artifactId>error_prone_core</artifactId> |
| <version>${error_prone.version}</version> |
| </path> |
| </annotationProcessorPaths> |
| </configuration> |
| </plugin> |
| </plugins> |
| </build> |
| </profile> |
| |
| <profile> |
| <!-- Run this in the root of the ICU project: |
| mvn clean test -DskipTests -DskipITs -l /tmp/errorprone_all.log -P errorprone-all |
| mvn exec:java -f icu4j/tools/build/ -P errorprone_report -DlogFile=/tmp/errorprone_all.log |
| On Windows you can use %TEMP%\errorprone_all.log for the temporary folder. |
| You can then inspect the content of the errorprone.log file, or the reports in |
| the target folder (errorprone*.html, errorprone.md, errorprone.tsv) --> |
| <id>errorprone-all</id> |
| <build> |
| <plugins> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-compiler-plugin</artifactId> |
| <configuration> |
| <showWarnings>true</showWarnings> |
| <failOnError>false</failOnError> |
| <fork>true</fork> |
| <encoding>UTF-8</encoding> |
| <!-- Use <compilerArg> to pass flags to errorprone. See https://errorprone.info/docs/flags --> |
| <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. |
| The proper severity level is then restored by the tool generating the reports. |
| --> |
| <arg>-Xplugin:ErrorProne -XepAllErrorsAsWarnings -Xep:UnicodeEscape:OFF</arg> |
| <arg>-Xmaxerrs</arg> |
| <arg>10000</arg> |
| <arg>-Xmaxwarns</arg> |
| <arg>10000</arg> |
| <arg>-J-Dfile.encoding=UTF-8</arg> |
| <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg> |
| <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg> |
| <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg> |
| <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg> |
| <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg> |
| <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg> |
| <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg> |
| <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg> |
| <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg> |
| <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg> |
| </compilerArgs> |
| <annotationProcessorPaths> |
| <path> |
| <groupId>com.google.errorprone</groupId> |
| <artifactId>error_prone_core</artifactId> |
| <version>${error_prone.version}</version> |
| </path> |
| </annotationProcessorPaths> |
| </configuration> |
| </plugin> |
| </plugins> |
| </build> |
| </profile> |
| |
| <profile> |
| <!-- This is used to generate a PMD report. |
| PMD is a code checker, similar to errorprone, |
| but there are non-overlapping checks between the two. |
| |
| To generate a report run this in the icu4j folder: |
| mvn clean site site:stage -DskipTests -DskipITs -P pmd |
| |
| The report can be seen at {icu_root}/icu4j/target/staging/index.html |
| Then Bottom-left => Project Reports => PMD. |
| Or access directly at {icu_root}/icu4j/target/staging/pmd.html |
| |
| Generating the report (above) does not result in a build failure. |
| To cause a build failure when issues are found (in CI) run this `verify` |
| command after the report was generated (the previous step): |
| mvn verify -DskipTests -DskipITs -P pmd |
| --> |
| <id>pmd</id> |
| <build> |
| <plugins> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-pmd-plugin</artifactId> |
| <executions> |
| <execution> |
| <goals> |
| <goal>aggregate-pmd-check</goal> |
| </goals> |
| </execution> |
| </executions> |
| <dependencies> |
| <dependency> |
| <groupId>com.ibm.icu</groupId> |
| <artifactId>tools_pmd</artifactId> |
| <version>${project.version}</version> |
| </dependency> |
| </dependencies> |
| </plugin> |
| </plugins> |
| </build> |
| <reporting> |
| <plugins> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-pmd-plugin</artifactId> |
| <reportSets> |
| <reportSet> |
| <reports> |
| <report>aggregate-pmd</report> |
| </reports> |
| </reportSet> |
| </reportSets> |
| </plugin> |
| </plugins> |
| </reporting> |
| </profile> |
| |
| </profiles> |
| |
| </project> |