mirror of
https://github.com/google/guava.git
synced 2026-10-28 16:47:30 +08:00
The suppressions are no longer necessary as of cl/937358981, which is [part of Error Prone 2.51.0](https://github.com/google/error-prone/commit/1259c50f8f164fb021dbdde08651602964ae6fd8). RELNOTES=n/a PiperOrigin-RevId: 1008358244
707 lines
30 KiB
XML
707 lines
30 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>999.0.0-HEAD-android-SNAPSHOT</version>
|
|
<packaging>pom</packaging>
|
|
<name>Guava Maven Parent</name>
|
|
<description>Parent for guava artifacts</description>
|
|
<url>https://github.com/google/guava</url>
|
|
<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>
|
|
<developers>
|
|
<!-- Sonatype requires that we list someone here. Guava has many contributors: https://github.com/google/guava/graphs/contributors -->
|
|
<developer>
|
|
<id>cpovirk</id>
|
|
<name>Chris Povirk</name>
|
|
<email>cpovirk@google.com</email>
|
|
</developer>
|
|
</developers>
|
|
<modules>
|
|
<module>guava</module>
|
|
<module>guava-bom</module>
|
|
<module>guava-testlib</module>
|
|
<module>guava-tests</module>
|
|
</modules>
|
|
<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>
|
|
<issueManagement>
|
|
<system>GitHub Issues</system>
|
|
<url>https://github.com/google/guava/issues</url>
|
|
</issueManagement>
|
|
<ciManagement>
|
|
<system>GitHub Actions</system>
|
|
<url>https://github.com/google/guava/actions</url>
|
|
</ciManagement>
|
|
<properties>
|
|
<!--
|
|
When building Guava, you can pass (e.g.) `-Dsurefire.toolchain.version=21` to change which version to run tests under.
|
|
You may find that you need to use Java 11+ to *build* Guava, but it continues to work under Java 8, and you can run tests to verify that, as we do.
|
|
-->
|
|
<surefire.toolchain.version>${java.specification.version}</surefire.toolchain.version>
|
|
<!-- Override this with -Dtest.include="**/SomeTest.java" on the CLI -->
|
|
<test.include>%regex[.*.class]</test.include>
|
|
<animal-sniffer-maven-plugin.version>1.28</animal-sniffer-maven-plugin.version>
|
|
<asm.version>9.10.1</asm.version>
|
|
<build-helper-maven-plugin.version>3.6.2</build-helper-maven-plugin.version>
|
|
<caliper.version>1.0-beta-3</caliper.version>
|
|
<central-publishing-maven-plugin.version>0.11.0</central-publishing-maven-plugin.version>
|
|
<error_prone_annotations.version>2.51.0</error_prone_annotations.version>
|
|
<error_prone_core.version>2.51.0</error_prone_core.version>
|
|
<exec-maven-plugin.version>3.5.0</exec-maven-plugin.version>
|
|
<failureaccess.version>1.0.3</failureaccess.version>
|
|
<gummy-bears-api-24-version>0.15.0</gummy-bears-api-24-version>
|
|
<gwt-maven-plugin.version>1.3.0</gwt-maven-plugin.version>
|
|
<gwt.version>2.13.1</gwt.version>
|
|
<j2objc.version>3.1</j2objc.version>
|
|
<java18-signature.version>1.0</java18-signature.version>
|
|
<javahome-resolver-maven-plugin.version>1.0.2</javahome-resolver-maven-plugin.version>
|
|
<jimfs.version>1.3.1</jimfs.version>
|
|
<jspecify.version>1.0.1</jspecify.version>
|
|
<jsr305.version>3.0.2</jsr305.version>
|
|
<junit.version>4.13.2</junit.version>
|
|
<listenablefuture.version>9999.0-empty-to-avoid-conflict-with-guava</listenablefuture.version>
|
|
<maven-antrun-plugin.version>3.2.0</maven-antrun-plugin.version>
|
|
<maven-assembly-plugin.version>3.8.0</maven-assembly-plugin.version>
|
|
<maven-bundle-plugin.version>6.2.0</maven-bundle-plugin.version>
|
|
<maven-clean-plugin.version>3.5.0</maven-clean-plugin.version>
|
|
<maven-compiler-plugin.version>3.16.0</maven-compiler-plugin.version>
|
|
<maven-dependency-plugin.version>3.11.0</maven-dependency-plugin.version>
|
|
<maven-deploy-plugin.version>3.2.0</maven-deploy-plugin.version>
|
|
<maven-enforcer-plugin.version>3.6.3</maven-enforcer-plugin.version>
|
|
<maven-gpg-plugin.version>3.0.1</maven-gpg-plugin.version>
|
|
<maven-install-plugin.version>3.2.0</maven-install-plugin.version>
|
|
<maven-jar-plugin.version>3.5.1</maven-jar-plugin.version>
|
|
<maven-javadoc-plugin.version>3.12.0</maven-javadoc-plugin.version>
|
|
<maven-release-plugin.version>3.3.1</maven-release-plugin.version>
|
|
<maven-resources-plugin.version>3.5.0</maven-resources-plugin.version>
|
|
<maven-site-plugin.version>3.22.0</maven-site-plugin.version>
|
|
<maven-source-plugin.version>3.4.0</maven-source-plugin.version>
|
|
<maven-surefire-plugin.version>3.5.6</maven-surefire-plugin.version>
|
|
<maven-toolchains-plugin.version>3.3.0</maven-toolchains-plugin.version>
|
|
<mockito.version>4.11.0</mockito.version>
|
|
<test-parameter-injector.version>1.22</test-parameter-injector.version>
|
|
<toolchains-maven-plugin.version>4.5.0</toolchains-maven-plugin.version>
|
|
<truth.version>1.4.5</truth.version>
|
|
<project.build.outputTimestamp>2026-01-02T00:00:00Z</project.build.outputTimestamp>
|
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
<!--
|
|
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>
|
|
<module.status>integration</module.status>
|
|
<variant.jvmEnvironment>android</variant.jvmEnvironment>
|
|
<variant.jvmEnvironmentVariantName>android</variant.jvmEnvironmentVariantName>
|
|
<otherVariant.version>999.0.0-HEAD-jre-SNAPSHOT</otherVariant.version>
|
|
<otherVariant.jvmEnvironment>standard-jvm</otherVariant.jvmEnvironment>
|
|
<otherVariant.jvmEnvironmentVariantName>jre</otherVariant.jvmEnvironmentVariantName>
|
|
</properties>
|
|
<dependencyManagement>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>org.jspecify</groupId>
|
|
<artifactId>jspecify</artifactId>
|
|
<version>${jspecify.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.google.errorprone</groupId>
|
|
<artifactId>error_prone_annotations</artifactId>
|
|
<version>${error_prone_annotations.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.google.j2objc</groupId>
|
|
<artifactId>j2objc-annotations</artifactId>
|
|
<version>${j2objc.version}</version>
|
|
</dependency>
|
|
<!--
|
|
We moved away from using dependencyManagement for test-only deps because of https://github.com/google/guava/issues/6654.
|
|
We could probably have resumed it after https://github.com/google/guava/pull/6664.
|
|
But it's always weird that published poms reference test-only libraries at all, so I'm not in any rush to do so.
|
|
-->
|
|
</dependencies>
|
|
</dependencyManagement>
|
|
<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>
|
|
<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>
|
|
<groupId>org.sonatype.central</groupId>
|
|
<artifactId>central-publishing-maven-plugin</artifactId>
|
|
<version>${central-publishing-maven-plugin.version}</version>
|
|
<extensions>true</extensions>
|
|
</plugin>
|
|
</plugins>
|
|
<pluginManagement>
|
|
<plugins>
|
|
<plugin>
|
|
<artifactId>maven-antrun-plugin</artifactId>
|
|
<version>${maven-antrun-plugin.version}</version>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-assembly-plugin</artifactId>
|
|
<version>${maven-assembly-plugin.version}</version>
|
|
<!-- I'm not aware of any normal situation in which we use maven-assembly-plugin. But it still shows up in the effective-pom, and I don't like having plugin versions that change automatically with the Maven version or, worse, whatever the most recently released version is. -->
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-clean-plugin</artifactId>
|
|
<version>${maven-clean-plugin.version}</version>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-compiler-plugin</artifactId>
|
|
<version>${maven-compiler-plugin.version}</version>
|
|
<configuration>
|
|
<source>1.8</source>
|
|
<target>1.8</target>
|
|
<encoding>UTF-8</encoding>
|
|
<parameters>true</parameters>
|
|
<compilerArgs>
|
|
<!-- https://errorprone.info/docs/installation#maven -->
|
|
<arg>-XDcompilePolicy=simple</arg>
|
|
<arg>--should-stop=ifError=FLOW</arg>
|
|
|
|
<!-- https://errorprone.info/docs/installation#maven -->
|
|
<arg>-Xplugin:ErrorProne -Xep:Java8ApiChecker:ERROR -XepDisableAllWarnings</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). -->
|
|
<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>
|
|
<arg>-Xlint:-removal,-options</arg>
|
|
</compilerArgs>
|
|
<annotationProcessorPaths>
|
|
<path>
|
|
<groupId>com.google.errorprone</groupId>
|
|
<artifactId>error_prone_core</artifactId>
|
|
<version>${error_prone_core.version}</version>
|
|
</path>
|
|
</annotationProcessorPaths>
|
|
<!-- Fork because we need args like add-exports. (But see the TODO above about .mvn/jvm.config.) -->
|
|
<fork>true</fork>
|
|
</configuration>
|
|
<executions>
|
|
<execution>
|
|
<id>default-compile</id>
|
|
<configuration>
|
|
<source>1.8</source>
|
|
<target>1.8</target>
|
|
<excludes>
|
|
<exclude>module-info.java</exclude>
|
|
</excludes>
|
|
<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>
|
|
</compilerArgs>
|
|
</configuration>
|
|
</execution>
|
|
<execution>
|
|
<id>default-testCompile</id>
|
|
<configuration>
|
|
<compilerArgs>
|
|
<compilerArg>-Xlint:-removal</compilerArg>
|
|
</compilerArgs>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-dependency-plugin</artifactId>
|
|
<version>${maven-dependency-plugin.version}</version>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-deploy-plugin</artifactId>
|
|
<version>${maven-deploy-plugin.version}</version>
|
|
<!-- Warning: Guava uses central-publishing-maven-plugin, not maven-deploy-plugin, so any configuration here does not apply to it. This section exists only to quiet warnings when Maven tries to pick a version of the plugin anyway (and it tries one that requires Maven 4). -->
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-enforcer-plugin</artifactId>
|
|
<version>${maven-enforcer-plugin.version}</version>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-install-plugin</artifactId>
|
|
<version>${maven-install-plugin.version}</version>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-jar-plugin</artifactId>
|
|
<version>${maven-jar-plugin.version}</version>
|
|
<configuration>
|
|
<!-- Warning: Guava (at least the main module) uses maven-bundle-plugin, not maven-jar-plugin, so the configuration does not apply to it. That configuration may or may not apply to guava-testlib or other modules. -->
|
|
<excludes>
|
|
<!-- The root module (where applicable) is withheld because it is provided at `META-INF/versions/9/`. -->
|
|
<exclude>/module-info.class</exclude>
|
|
<!-- Avoid duplicating compiled classes within the `META-INF/versions/9/` root. -->
|
|
<exclude>META-INF/versions/9/com/**/*.class</exclude>
|
|
</excludes>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-javadoc-plugin</artifactId>
|
|
<version>${maven-javadoc-plugin.version}</version>
|
|
<configuration>
|
|
<quiet>true</quiet>
|
|
<notimestamp>true</notimestamp>
|
|
<doctitle>${project.name}</doctitle>
|
|
<windowtitle>${project.name} API</windowtitle>
|
|
<encoding>UTF-8</encoding>
|
|
<docencoding>UTF-8</docencoding>
|
|
<charset>UTF-8</charset>
|
|
<additionalOptions>
|
|
<additionalOption>-XDignore.symbol.file</additionalOption>
|
|
<additionalOption>-Xdoclint:-html</additionalOption>
|
|
</additionalOptions>
|
|
<source>8</source>
|
|
</configuration>
|
|
<executions>
|
|
<execution>
|
|
<id>attach-javadocs</id>
|
|
<goals><goal>jar</goal></goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-release-plugin</artifactId>
|
|
<version>${maven-release-plugin.version}</version>
|
|
<!-- I'm not aware of any normal situation in which we use maven-release-plugin. But it still shows up in the effective-pom, and I don't like having plugin versions that change automatically with the Maven version or, worse, whatever the most recently released version is. -->
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-resources-plugin</artifactId>
|
|
<version>${maven-resources-plugin.version}</version>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-site-plugin</artifactId>
|
|
<version>${maven-site-plugin.version}</version>
|
|
<!-- I'm not aware of any normal situation in which we use maven-site-plugin. But it still shows up in the effective-pom, and I don't like having plugin versions that change automatically with the Maven version or, worse, whatever the most recently released version is. -->
|
|
</plugin>
|
|
<plugin>
|
|
<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>
|
|
<artifactId>maven-surefire-plugin</artifactId>
|
|
<version>${maven-surefire-plugin.version}</version>
|
|
<configuration>
|
|
<jdkToolchain>
|
|
<version>${surefire.toolchain.version}</version>
|
|
</jdkToolchain>
|
|
<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[.*PackageSanityTest.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>
|
|
<!-- https://github.com/google/guava/issues/8295 -->
|
|
<useManifestOnlyJar>false</useManifestOnlyJar>
|
|
<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>
|
|
<artifactId>maven-toolchains-plugin</artifactId>
|
|
<version>${maven-toolchains-plugin.version}</version>
|
|
<executions>
|
|
<execution>
|
|
<goals>
|
|
<goal>toolchain</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
<configuration>
|
|
<toolchains>
|
|
<jdk>
|
|
<version>27</version>
|
|
</jdk>
|
|
</toolchains>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.codehaus.mojo</groupId>
|
|
<artifactId>animal-sniffer-maven-plugin</artifactId>
|
|
<version>${animal-sniffer-maven-plugin.version}</version>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>org.ow2.asm</groupId>
|
|
<artifactId>asm</artifactId>
|
|
<version>${asm.version}</version>
|
|
</dependency>
|
|
</dependencies>
|
|
<configuration>
|
|
<annotations>
|
|
<annotation>com.google.common.base.IgnoreJRERequirement</annotation>
|
|
<annotation>com.google.common.cache.IgnoreJRERequirement</annotation>
|
|
<annotation>com.google.common.collect.IgnoreJRERequirement</annotation>
|
|
<annotation>com.google.common.collect.testing.IgnoreJRERequirement</annotation>
|
|
<annotation>com.google.common.collect.testing.testers.IgnoreJRERequirement</annotation>
|
|
<annotation>com.google.common.hash.IgnoreJRERequirement</annotation>
|
|
<annotation>com.google.common.io.IgnoreJRERequirement</annotation>
|
|
<annotation>com.google.common.math.IgnoreJRERequirement</annotation>
|
|
<annotation>com.google.common.primitives.IgnoreJRERequirement</annotation>
|
|
<annotation>com.google.common.reflect.IgnoreJRERequirement</annotation>
|
|
<annotation>com.google.common.testing.IgnoreJRERequirement</annotation>
|
|
<annotation>com.google.common.util.concurrent.IgnoreJRERequirement</annotation>
|
|
</annotations>
|
|
<checkTestClasses>true</checkTestClasses>
|
|
<signature>
|
|
<groupId>com.toasttab.android</groupId>
|
|
<artifactId>gummy-bears-api-24</artifactId>
|
|
<version>${gummy-bears-api-24-version}</version>
|
|
</signature>
|
|
<ignores>
|
|
<!-- Unsafe isn't part of the documented Android API, but it is available.
|
|
And in cases where it's not, we have fallbacks (except maybe Striped64 (b/307807965)?). -->
|
|
<ignore>sun.misc.Unsafe</ignore>
|
|
</ignores>
|
|
</configuration>
|
|
<executions>
|
|
<execution>
|
|
<id>check-java-version-compatibility</id>
|
|
<phase>test</phase>
|
|
<goals>
|
|
<goal>check</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.codehaus.mojo</groupId>
|
|
<artifactId>build-helper-maven-plugin</artifactId>
|
|
<version>${build-helper-maven-plugin.version}</version>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.mvnsearch</groupId>
|
|
<artifactId>toolchains-maven-plugin</artifactId>
|
|
<version>${toolchains-maven-plugin.version}</version>
|
|
<executions>
|
|
<!--
|
|
We can apparently have only one <jdk> per execution: Others are silently ignored :(
|
|
To properly test this, you need to remove existing toolchains:
|
|
rm -rf ~/.m2/jdks/ ~/.m2/toolchains.xml
|
|
(But don't run that if you have put something into ~/.m2/toolchains.xml yourself.)
|
|
-->
|
|
<execution>
|
|
<id>download-27-and-surefire-version</id>
|
|
<goals>
|
|
<goal>toolchain</goal>
|
|
</goals>
|
|
<configuration>
|
|
<toolchains>
|
|
<jdk>
|
|
<version>27</version>
|
|
<vendor>temurin</vendor>
|
|
</jdk>
|
|
<testJdk>
|
|
<version>${surefire.toolchain.version}</version>
|
|
<vendor>temurin</vendor>
|
|
</testJdk>
|
|
</toolchains>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
</pluginManagement>
|
|
</build>
|
|
<profiles>
|
|
<profile>
|
|
<id>sonatype-oss-release</id>
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<artifactId>maven-gpg-plugin</artifactId>
|
|
<version>${maven-gpg-plugin.version}</version>
|
|
<executions>
|
|
<execution>
|
|
<id>sign-artifacts</id>
|
|
<phase>verify</phase>
|
|
<goals>
|
|
<goal>sign</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</profile>
|
|
<profile>
|
|
<id>suppress-open-jre-modules-for-toolchain-1.8</id>
|
|
<activation>
|
|
<property>
|
|
<name>surefire.toolchain.version</name>
|
|
<!-- the value provided by java.specification.version -->
|
|
<value>1.8</value>
|
|
</property>
|
|
</activation>
|
|
<properties>
|
|
<test.add.opens></test.add.opens>
|
|
</properties>
|
|
</profile>
|
|
<profile>
|
|
<id>suppress-open-jre-modules-for-toolchain-8</id>
|
|
<activation>
|
|
<property>
|
|
<name>surefire.toolchain.version</name>
|
|
<!-- the value provided by GitHub CI (which maybe we could even change, but supporting "8" seems nice for any users who try pass that value manually) -->
|
|
<value>8</value>
|
|
</property>
|
|
</activation>
|
|
<properties>
|
|
<test.add.opens></test.add.opens>
|
|
</properties>
|
|
</profile>
|
|
<!-- JDiff and the Gradle integration tests need Java 11 to be installed, and they need to know where it's located so that they can set JAVA_HOME to point to it. The following profile downloads a temurin Java 11 (if one isn't already available) and writes its location to target/java_11_home. This lets our JDiff and Gradle-integration-test scripts invoke the `print-java-11-home` profile and then read that file. -->
|
|
<profile>
|
|
<id>print-java-11-home</id>
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.mvnsearch</groupId>
|
|
<artifactId>toolchains-maven-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>download-11</id>
|
|
<phase>initialize</phase>
|
|
<goals>
|
|
<goal>toolchain</goal>
|
|
</goals>
|
|
<configuration>
|
|
<toolchains>
|
|
<jdk>
|
|
<version>11</version>
|
|
<vendor>temurin</vendor>
|
|
</jdk>
|
|
</toolchains>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-toolchains-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>select-java-11</id>
|
|
<phase>initialize</phase>
|
|
<goals>
|
|
<goal>toolchain</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
<configuration>
|
|
<toolchains>
|
|
<jdk>
|
|
<version>11</version>
|
|
</jdk>
|
|
</toolchains>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>com.diamondq.maven</groupId>
|
|
<artifactId>javahome-resolver-maven-plugin</artifactId>
|
|
<version>${javahome-resolver-maven-plugin.version}</version>
|
|
<executions>
|
|
<execution>
|
|
<id>resolve-java-11</id>
|
|
<phase>initialize</phase>
|
|
<goals>
|
|
<goal>resolve</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.codehaus.mojo</groupId>
|
|
<artifactId>exec-maven-plugin</artifactId>
|
|
<version>${exec-maven-plugin.version}</version>
|
|
<executions>
|
|
<execution>
|
|
<id>print-java-11-home</id>
|
|
<phase>initialize</phase>
|
|
<goals>
|
|
<goal>exec</goal>
|
|
</goals>
|
|
<configuration>
|
|
<executable>echo</executable>
|
|
<arguments>
|
|
<argument>${javaHome}</argument>
|
|
</arguments>
|
|
<outputFile>${project.build.directory}/java_11_home</outputFile>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</profile>
|
|
<profile>
|
|
<id>print-java-17-home</id>
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.mvnsearch</groupId>
|
|
<artifactId>toolchains-maven-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>download-17</id>
|
|
<phase>initialize</phase>
|
|
<goals>
|
|
<goal>toolchain</goal>
|
|
</goals>
|
|
<configuration>
|
|
<toolchains>
|
|
<jdk>
|
|
<version>17</version>
|
|
<vendor>temurin</vendor>
|
|
</jdk>
|
|
</toolchains>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-toolchains-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>select-java-17</id>
|
|
<phase>initialize</phase>
|
|
<goals>
|
|
<goal>toolchain</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
<configuration>
|
|
<toolchains>
|
|
<jdk>
|
|
<version>17</version>
|
|
</jdk>
|
|
</toolchains>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>com.diamondq.maven</groupId>
|
|
<artifactId>javahome-resolver-maven-plugin</artifactId>
|
|
<version>${javahome-resolver-maven-plugin.version}</version>
|
|
<executions>
|
|
<execution>
|
|
<id>resolve-java-17</id>
|
|
<phase>initialize</phase>
|
|
<goals>
|
|
<goal>resolve</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.codehaus.mojo</groupId>
|
|
<artifactId>exec-maven-plugin</artifactId>
|
|
<version>${exec-maven-plugin.version}</version>
|
|
<executions>
|
|
<execution>
|
|
<id>print-java-17-home</id>
|
|
<phase>initialize</phase>
|
|
<goals>
|
|
<goal>exec</goal>
|
|
</goals>
|
|
<configuration>
|
|
<executable>echo</executable>
|
|
<arguments>
|
|
<argument>${javaHome}</argument>
|
|
</arguments>
|
|
<outputFile>${project.build.directory}/java_17_home</outputFile>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</profile>
|
|
</profiles>
|
|
</project>
|