535 lines
20 KiB
XML
535 lines
20 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<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/maven-v4_0_0.xsd">
|
|
|
|
<modelVersion>4.0.0</modelVersion>
|
|
<groupId>com.google.guava</groupId>
|
|
<artifactId>guava-parent</artifactId>
|
|
<version>32.0.1-jre</version>
|
|
<packaging>pom</packaging>
|
|
<name>Guava Maven Parent</name>
|
|
<description>Parent for guava artifacts</description>
|
|
<url>https://github.com/google/guava</url>
|
|
<properties>
|
|
<!-- Override this with -Dtest.include="**/SomeTest.java" on the CLI -->
|
|
<test.include>%regex[.*.class]</test.include>
|
|
<truth.version>1.1.3</truth.version>
|
|
<maven-javadoc-plugin.version>3.4.1</maven-javadoc-plugin.version>
|
|
<javac.version>9+181-r4173-1</javac.version>
|
|
<!-- Empty for all JDKs but 9-12 -->
|
|
<maven-javadoc-plugin.additionalJOptions></maven-javadoc-plugin.additionalJOptions>
|
|
<maven-source-plugin.version>3.2.1</maven-source-plugin.version>
|
|
<project.build.outputTimestamp>2023-06-08T22:27:07Z</project.build.outputTimestamp>
|
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
<test.add.opens></test.add.opens>
|
|
</properties>
|
|
<issueManagement>
|
|
<system>GitHub Issues</system>
|
|
<url>https://github.com/google/guava/issues</url>
|
|
</issueManagement>
|
|
<inceptionYear>2010</inceptionYear>
|
|
<licenses>
|
|
<license>
|
|
<name>Apache License, Version 2.0</name>
|
|
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
|
<distribution>repo</distribution>
|
|
</license>
|
|
</licenses>
|
|
<scm>
|
|
<connection>scm:git:https://github.com/google/guava.git</connection>
|
|
<developerConnection>scm:git:git@github.com:google/guava.git</developerConnection>
|
|
<url>https://github.com/google/guava</url>
|
|
</scm>
|
|
<developers>
|
|
<developer>
|
|
<id>kevinb9n</id>
|
|
<name>Kevin Bourrillion</name>
|
|
<email>kevinb@google.com</email>
|
|
<organization>Google</organization>
|
|
<organizationUrl>http://www.google.com</organizationUrl>
|
|
<roles>
|
|
<role>owner</role>
|
|
<role>developer</role>
|
|
</roles>
|
|
<timezone>-8</timezone>
|
|
</developer>
|
|
</developers>
|
|
<ciManagement>
|
|
<system>GitHub Actions</system>
|
|
<url>https://github.com/google/guava/actions</url>
|
|
</ciManagement>
|
|
<modules>
|
|
<module>guava</module>
|
|
<module>guava-bom</module>
|
|
<module>guava-gwt</module>
|
|
<module>guava-testlib</module>
|
|
<module>guava-tests</module>
|
|
</modules>
|
|
<build>
|
|
<!-- Handle where Guava deviates from Maven defaults -->
|
|
<sourceDirectory>src</sourceDirectory>
|
|
<testSourceDirectory>test</testSourceDirectory>
|
|
<resources>
|
|
<resource>
|
|
<directory>..</directory>
|
|
<includes>
|
|
<include>LICENSE</include>
|
|
</includes>
|
|
<targetPath>META-INF</targetPath>
|
|
</resource>
|
|
</resources>
|
|
<testResources>
|
|
<testResource>
|
|
<directory>test</directory>
|
|
<excludes>
|
|
<exclude>**/*.java</exclude>
|
|
</excludes>
|
|
</testResource>
|
|
</testResources>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-enforcer-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>enforce-versions</id>
|
|
<goals>
|
|
<goal>enforce</goal>
|
|
</goals>
|
|
<configuration>
|
|
<rules>
|
|
<requireMavenVersion>
|
|
<version>3.0.5</version>
|
|
</requireMavenVersion>
|
|
<requireJavaVersion>
|
|
<version>1.8.0</version>
|
|
</requireJavaVersion>
|
|
</rules>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-javadoc-plugin</artifactId>
|
|
<version>${maven-javadoc-plugin.version}</version>
|
|
<configuration>
|
|
<source>${java.specification.version}</source>
|
|
</configuration>
|
|
</plugin>
|
|
</plugins>
|
|
<pluginManagement>
|
|
<plugins>
|
|
<plugin>
|
|
<artifactId>maven-compiler-plugin</artifactId>
|
|
<version>3.8.1</version>
|
|
<configuration>
|
|
<source>1.8</source>
|
|
<target>1.8</target>
|
|
<encoding>UTF-8</encoding>
|
|
<parameters>true</parameters>
|
|
<compilerArgs>
|
|
<!--
|
|
Make includes/excludes fully work:
|
|
https://issues.apache.org/jira/browse/MCOMPILER-174
|
|
|
|
(Compare what guava-gwt has to do for maven-javadoc-plugin.)
|
|
-->
|
|
<arg>-sourcepath</arg>
|
|
<arg>doesnotexist</arg>
|
|
<!-- https://errorprone.info/docs/installation#maven -->
|
|
<arg>-XDcompilePolicy=simple</arg>
|
|
<!-- -Xplugin:ErrorProne is set conditionally by a profile. -->
|
|
</compilerArgs>
|
|
<annotationProcessorPaths>
|
|
<path>
|
|
<groupId>com.google.errorprone</groupId>
|
|
<artifactId>error_prone_core</artifactId>
|
|
<version>2.16</version>
|
|
</path>
|
|
</annotationProcessorPaths>
|
|
<!-- Fork:
|
|
|
|
- for JDK8 because we use a javac9 bootclasspath
|
|
|
|
- for JDK9+ because we need args like add-exports
|
|
-->
|
|
<fork>true</fork>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-jar-plugin</artifactId>
|
|
<version>3.2.0</version>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-source-plugin</artifactId>
|
|
<version>${maven-source-plugin.version}</version>
|
|
<executions>
|
|
<execution>
|
|
<id>attach-sources</id>
|
|
<phase>post-integration-test</phase>
|
|
<goals><goal>jar</goal></goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.codehaus.mojo</groupId>
|
|
<artifactId>animal-sniffer-maven-plugin</artifactId>
|
|
<version>1.23</version>
|
|
<configuration>
|
|
<annotations>com.google.common.io.IgnoreJRERequirement,com.google.common.reflect.IgnoreJRERequirement,com.google.common.testing.IgnoreJRERequirement</annotations>
|
|
<checkTestClasses>true</checkTestClasses>
|
|
<signature>
|
|
<groupId>org.codehaus.mojo.signature</groupId>
|
|
<artifactId>java18</artifactId>
|
|
<version>1.0</version>
|
|
</signature>
|
|
</configuration>
|
|
<executions>
|
|
<execution>
|
|
<id>check-java-version-compatibility</id>
|
|
<phase>test</phase>
|
|
<goals>
|
|
<goal>check</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-javadoc-plugin</artifactId>
|
|
<version>${maven-javadoc-plugin.version}</version>
|
|
<configuration>
|
|
<quiet>true</quiet>
|
|
<notimestamp>true</notimestamp>
|
|
<encoding>UTF-8</encoding>
|
|
<docencoding>UTF-8</docencoding>
|
|
<charset>UTF-8</charset>
|
|
<additionalOptions>
|
|
<additionalOption>-XDignore.symbol.file</additionalOption>
|
|
<additionalOption>-Xdoclint:-html</additionalOption>
|
|
</additionalOptions>
|
|
<linksource>true</linksource>
|
|
<source>8</source>
|
|
<additionalJOption>${maven-javadoc-plugin.additionalJOptions}</additionalJOption>
|
|
</configuration>
|
|
<executions>
|
|
<execution>
|
|
<id>attach-docs</id>
|
|
<phase>post-integration-test</phase>
|
|
<goals><goal>jar</goal></goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-dependency-plugin</artifactId>
|
|
<version>3.1.1</version>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-antrun-plugin</artifactId>
|
|
<version>1.6</version>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-surefire-plugin</artifactId>
|
|
<version>2.7.2</version>
|
|
<configuration>
|
|
<includes>
|
|
<include>${test.include}</include>
|
|
</includes>
|
|
<!-- By having our own entries here, we also override the default exclusion filter, which excludes all nested classes. -->
|
|
<excludes>
|
|
<!-- https://github.com/google/guava/issues/2840 -->
|
|
<exclude>%regex[.*PackageSanityTests.*.class]</exclude>
|
|
<!-- FeatureUtilTest.*ExampleDerivedInterfaceTester, com.google.common.io.*Tester, incidentally FeatureSpecificTestSuiteBuilderTest.MyAbstractTester (but we don't care either way because it's not meant to run on its own but works OK if it does)... but not NullPointerTesterTest, etc. -->
|
|
<exclude>%regex[.*Tester.class]</exclude>
|
|
<!-- Anonymous TestCase subclasses in GeneratedMonitorTest -->
|
|
<exclude>%regex[.*[$]\d+.class]</exclude>
|
|
</excludes>
|
|
<redirectTestOutputToFile>true</redirectTestOutputToFile>
|
|
<runOrder>alphabetical</runOrder>
|
|
<!-- Set max heap for tests. -->
|
|
<!-- Catch dependencies on the default locale by setting it to hi-IN. -->
|
|
<argLine>-Xmx1536M -Duser.language=hi -Duser.country=IN ${test.add.opens}</argLine>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-enforcer-plugin</artifactId>
|
|
<version>3.0.0-M3</version>
|
|
</plugin>
|
|
</plugins>
|
|
</pluginManagement>
|
|
</build>
|
|
<distributionManagement>
|
|
<snapshotRepository>
|
|
<id>sonatype-nexus-snapshots</id>
|
|
<name>Sonatype Nexus Snapshots</name>
|
|
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
|
|
</snapshotRepository>
|
|
<repository>
|
|
<id>sonatype-nexus-staging</id>
|
|
<name>Nexus Release Repository</name>
|
|
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
|
|
</repository>
|
|
<site>
|
|
<id>guava-site</id>
|
|
<name>Guava Documentation Site</name>
|
|
<url>scp://dummy.server/dontinstall/usestaging</url>
|
|
</site>
|
|
</distributionManagement>
|
|
<dependencyManagement>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>com.google.code.findbugs</groupId>
|
|
<artifactId>jsr305</artifactId>
|
|
<version>3.0.2</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.checkerframework</groupId>
|
|
<artifactId>checker-qual</artifactId>
|
|
<version>3.33.0</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.google.errorprone</groupId>
|
|
<artifactId>error_prone_annotations</artifactId>
|
|
<version>2.18.0</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.google.j2objc</groupId>
|
|
<artifactId>j2objc-annotations</artifactId>
|
|
<version>2.8</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>junit</groupId>
|
|
<artifactId>junit</artifactId>
|
|
<version>4.13.2</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.mockito</groupId>
|
|
<artifactId>mockito-core</artifactId>
|
|
<version>4.11.0</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.google.jimfs</groupId>
|
|
<artifactId>jimfs</artifactId>
|
|
<version>1.2</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.google.truth</groupId>
|
|
<artifactId>truth</artifactId>
|
|
<version>${truth.version}</version>
|
|
<scope>test</scope>
|
|
<exclusions>
|
|
<exclusion>
|
|
<!-- use the guava we're building. -->
|
|
<groupId>com.google.guava</groupId>
|
|
<artifactId>guava</artifactId>
|
|
</exclusion>
|
|
</exclusions>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.google.truth.extensions</groupId>
|
|
<artifactId>truth-java8-extension</artifactId>
|
|
<version>${truth.version}</version>
|
|
<scope>test</scope>
|
|
<exclusions>
|
|
<exclusion>
|
|
<!-- use the guava we're building. -->
|
|
<groupId>com.google.guava</groupId>
|
|
<artifactId>guava</artifactId>
|
|
</exclusion>
|
|
</exclusions>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.google.caliper</groupId>
|
|
<artifactId>caliper</artifactId>
|
|
<version>1.0-beta-3</version>
|
|
<scope>test</scope>
|
|
<exclusions>
|
|
<exclusion>
|
|
<!-- use the guava we're building. -->
|
|
<groupId>com.google.guava</groupId>
|
|
<artifactId>guava</artifactId>
|
|
</exclusion>
|
|
</exclusions>
|
|
</dependency>
|
|
</dependencies>
|
|
</dependencyManagement>
|
|
<profiles>
|
|
<profile>
|
|
<id>sonatype-oss-release</id>
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-source-plugin</artifactId>
|
|
<version>${maven-source-plugin.version}</version>
|
|
<executions>
|
|
<execution>
|
|
<id>attach-sources</id>
|
|
<goals>
|
|
<goal>jar-no-fork</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-javadoc-plugin</artifactId>
|
|
<version>${maven-javadoc-plugin.version}</version>
|
|
<executions>
|
|
<execution>
|
|
<id>attach-javadocs</id>
|
|
<goals>
|
|
<goal>jar</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-gpg-plugin</artifactId>
|
|
<version>3.0.1</version>
|
|
<executions>
|
|
<execution>
|
|
<id>sign-artifacts</id>
|
|
<phase>verify</phase>
|
|
<goals>
|
|
<goal>sign</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</profile>
|
|
<profile>
|
|
<!--
|
|
Passes JDK 11-12-specific `no-module-directories` flag to Javadoc tool,
|
|
which is required to make symbol search work correctly in the generated
|
|
pages.
|
|
|
|
This flag does not exist on 9-10 and 13+ (https://bugs.openjdk.java.net/browse/JDK-8215582).
|
|
|
|
Consider removing it once our release and test scripts are migrated to a recent JDK (17+).
|
|
-->
|
|
<id>javadocs-jdk11-12</id>
|
|
<activation>
|
|
<jdk>[11,13)</jdk>
|
|
</activation>
|
|
<properties>
|
|
<maven-javadoc-plugin.additionalJOptions>--no-module-directories</maven-javadoc-plugin.additionalJOptions>
|
|
</properties>
|
|
</profile>
|
|
<profile>
|
|
<id>open-jre-modules</id>
|
|
<activation>
|
|
<jdk>[9,]</jdk>
|
|
</activation>
|
|
<properties>
|
|
<!--
|
|
Some tests need reflective access to the internals of these packages. It is only the
|
|
tests themselves and not the code being tested that needs that access, though there's no
|
|
obvious way to ensure that.
|
|
|
|
We could consider arranging things so that only the tests we know need this would get
|
|
the add-opens. Right now that doesn't seem worth the effort, though.
|
|
-->
|
|
<test.add.opens>
|
|
--add-opens java.base/java.lang=ALL-UNNAMED
|
|
--add-opens java.base/java.util=ALL-UNNAMED
|
|
--add-opens java.base/sun.security.jca=ALL-UNNAMED
|
|
</test.add.opens>
|
|
</properties>
|
|
</profile>
|
|
<profile>
|
|
<id>javac9-for-jdk8</id>
|
|
<activation>
|
|
<jdk>1.8</jdk>
|
|
</activation>
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-compiler-plugin</artifactId>
|
|
<configuration>
|
|
<!-- Under JDK8, we continue to use errorprone's javac9 (even
|
|
though we don't run Error Prone itself, which no longer
|
|
supports JDK8!).
|
|
|
|
Why? At some point, presumably after
|
|
https://github.com/google/guava/commit/e06a8cec65815599e510d7f9c1ea9d2a8eaa438a,
|
|
builds with JDK8 began failing animal-sniffer with the error:
|
|
|
|
Failed to check signatures: Bad class file .../CollectionFuture$ListFuture.class
|
|
|
|
One way of dealing with that would be to disable
|
|
animal-sniffer. And that would be fine for our -jre builds:
|
|
If we're building with JDK8, then clearly we're sticking to
|
|
JDK8 APIs. However, I assume (but did not confirm) that we'd
|
|
have the same issue with our -android builds, which need
|
|
animal-sniffer so that they can check that we're sticking to
|
|
JDK6-like APIs.
|
|
|
|
So instead, we use javac9, which doesn't lead to this error.
|
|
-->
|
|
<compilerArgs combine.children="append">
|
|
<arg>-J-Xbootclasspath/p:${settings.localRepository}/com/google/errorprone/javac/${javac.version}/javac-${javac.version}.jar</arg>
|
|
</compilerArgs>
|
|
</configuration>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</profile>
|
|
<profile>
|
|
<id>run-error-prone</id>
|
|
<activation>
|
|
<!--
|
|
Error Prone requires 11+: https://errorprone.info/docs/installation
|
|
We skip 12-15 because of https://github.com/google/error-prone/issues/3540.
|
|
-->
|
|
<jdk>[11,12),[16,)</jdk>
|
|
</activation>
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-compiler-plugin</artifactId>
|
|
<configuration>
|
|
<compilerArgs combine.children="append">
|
|
<!-- https://errorprone.info/docs/installation#maven -->
|
|
<!-- TODO(cpovirk): Enable NullArgumentForNonNullParameter for
|
|
prod code. It's disabled automatically for "test code"
|
|
(which is good: our tests have intentional violations), but
|
|
Error Prone doesn't know it's building test code unless we
|
|
pass -XepCompilingTestOnlyCode, and that argument needs to
|
|
be passed as part of the same <arg> as -Xplugin:ErrorProne,
|
|
and I gave up trying to figure out how to do that for test
|
|
compilation only. -->
|
|
<arg>-Xplugin:ErrorProne -Xep:NullArgumentForNonNullParameter:OFF -Xep:Java8ApiChecker:ERROR</arg>
|
|
<!-- https://github.com/google/error-prone/blob/f8e33bc460be82ab22256a7ef8b979d7a2cacaba/docs/installation.md#jdk-16 -->
|
|
<!-- TODO(cpovirk): Use .mvn/jvm.config instead (per
|
|
https://errorprone.info/docs/installation#maven) if it can
|
|
be made not to interfere with JDK8 or if we stop building
|
|
with JDK8. -->
|
|
<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>
|
|
</configuration>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</profile>
|
|
</profiles>
|
|
</project>
|