blob: 93b81eff513fe610d3892090c73d3ea5ad6ffabf [file] [log] [blame]
<?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>
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>7</version>
</parent>
<groupId>com.google.truth</groupId>
<artifactId>truth-parent</artifactId>
<version>HEAD-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Truth (Parent)</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Properties for plugins for which pluginManagement hasn't been working for us. -->
<maven-javadoc-plugin.version>3.3.2</maven-javadoc-plugin.version>
<maven-enforcer-plugin.version>3.0.0</maven-enforcer-plugin.version>
<!-- Properties for multiple-artifact deps. -->
<auto-value.version>1.9</auto-value.version>
<!--
We have a separate property for each flavor of Guava (instead of a shared
version without the -android and -jre suffixes) because that lets
Dependabot update our Guava versions.
-->
<guava.android.version>31.1-android</guava.android.version>
<!--
Also, we have this comment in between the 2 flavors of Guava. That's
also to smooth the Dependabot update process: Dependabot generates a
separate PR for each flavor. Even if we approve both at the same
time, one gets submitted before the other, and
the other ends up with a merge conflict. That requires reapprovals.
-->
<guava.jre.version>31.1-jre</guava.jre.version>
<gwt.version>2.9.0</gwt.version>
<protobuf.version>3.19.4</protobuf.version>
<!-- Property for protobuf-lite protocArtifact, which isn't a "normal" Maven dep. -->
<!-- TODO(cpovirk): Use protobuf.version instead. But that requires finding the new way to request the Lite runtime. -->
<protobuf-lite.protoc.version>3.1.0</protobuf-lite.protoc.version>
<!-- Property for an extension, since Maven doesn't have extensionManagement. -->
<os-maven-plugin.version>1.7.0</os-maven-plugin.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.truth</groupId>
<artifactId>truth</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.google.truth.extensions</groupId>
<artifactId>truth-liteproto-extension</artifactId>
<version>${project.version}</version>
</dependency>
<!--
We could add the other modules of Truth, but there's no need because no
modules depend on them yet.
-->
<dependency>
<!--
In addition to setting the version of Guava that's used when Truth
depends directly on com.google.common:guava, this section also
overrides the version that's pulled in transitively by guava-gwt
(which is a test-scope dependency of core Truth). The Guava APIs
"missing" in guava-android might cause us problems down the line if we
actually started to run nontrivial GWT tests; I'm not sure.
-->
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.android.version}</version>
</dependency>
<dependency>
<groupId>org.checkerframework</groupId>
<artifactId>checker-qual</artifactId>
<version>3.21.4</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>${gwt.version}</version>
</dependency>
<dependency>
<groupId>com.google.auto.value</groupId>
<artifactId>auto-value-annotations</artifactId>
<version>${auto-value.version}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava-gwt</artifactId>
<version>${guava.jre.version}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava-testlib</artifactId>
<version>${guava.android.version}</version>
</dependency>
<dependency>
<groupId>com.google.testing.compile</groupId>
<artifactId>compile-testing</artifactId>
<version>0.19</version>
<exclusions>
<exclusion>
<groupId>com.google.truth</groupId>
<artifactId>truth</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_annotations</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>${protobuf.version}</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-lite</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>com.google.re2j</groupId>
<artifactId>re2j</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>9.3</version>
</dependency>
<dependency>
<groupId>com.google.jsinterop</groupId>
<artifactId>jsinterop-annotations</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
</dependencyManagement>
<description>
Parent metadata for Truth, a Java assertion framework.
</description>
<modules>
<module>core</module>
<module>extensions</module>
</modules>
<prerequisites><maven>3.1.1</maven></prerequisites>
<developers>
<developer>
<id>cgruber</id>
<name>Christian Gruber</name>
<email>christianedwardgruber@gmail.com</email>
<url>http://www.geekinasuit.com/</url>
<roles>
<role>creator</role>
<role>developer</role>
</roles>
<timezone>-8</timezone>
</developer>
<developer>
<id>kak</id>
<name>Kurt Alfred Kluever</name>
<roles>
<role>evolver</role>
<role>developer</role>
</roles>
<timezone>-5</timezone>
</developer>
<developer>
<id>dsaff</id>
<name>David Saff</name>
<roles>
<role>creator</role>
<role>developer</role>
</roles>
<timezone>-5</timezone>
</developer>
<developer>
<id>hagbard</id>
<name>David B</name>
<roles>
<role>creator</role>
<role>developer</role>
</roles>
<timezone>+2</timezone>
</developer>
</developers>
<url>http://github.com/google/truth</url>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<issueManagement>
<system>Github</system>
<url>https://github.com/google/truth/issues</url>
</issueManagement>
<ciManagement>
<system>Jenkins</system>
<url>https://travis-ci.org/google/truth</url>
</ciManagement>
<scm>
<connection>scm:git:git@github.com:google/truth.git</connection>
<url>scm:git:git@github.com:google/truth.git</url>
</scm>
<build>
<pluginManagement>
<plugins>
<!-- https://stackoverflow.com/a/51093732/28465 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.11.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-javadoc-plugin.version}</version>
<configuration>
<additionalOptions>
<additionalOption>--frames</additionalOption>
<additionalOption>-Xdoclint:-html</additionalOption>
</additionalOptions>
<additionalJOptions>
<additionalJOption>--no-module-directories</additionalJOption>
</additionalJOptions>
<doctitle>Truth ${project.version}</doctitle>
<windowtitle>Truth ${project.version}</windowtitle>
<quiet>true</quiet>
<notimestamp>true</notimestamp>
<encoding>UTF-8</encoding>
<docencoding>UTF-8</docencoding>
<charset>UTF-8</charset>
<overview>overview.html</overview>
<detectJavaApiLink>false</detectJavaApiLink>
<links>
<!-- TODO(cpovirk): Link to the version that we depend on? -->
<link>https://guava.dev/releases/snapshot-jre/api/docs</link>
<link>https://developers.google.com/protocol-buffers/docs/reference/java</link>
<link>https://junit.org/junit4/javadoc/latest/</link>
<link>https://docs.oracle.com/javase/7/docs/api/</link>
</links>
<sourceFileExcludes>
<sourceFileExclude>**/super/**/*.java</sourceFileExclude>
</sourceFileExcludes>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.2</version> <!-- work around ubuntu bug -->
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>animal-sniffer-maven-plugin</artifactId>
<version>1.21</version>
<configuration>
<signature>
<groupId>org.codehaus.mojo.signature</groupId>
<artifactId>java16-sun</artifactId>
<version>1.10</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-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${maven-enforcer-plugin.version}</version>
<executions>
<execution>
<id>enforce</id>
<configuration>
<rules>
<requireUpperBoundDeps>
<excludes>
<!-- We have some deps on guava-android and others on guava-jre. -->
<exclude>com.google.guava:guava</exclude>
</excludes>
</requireUpperBoundDeps>
<!--
Note that this rule would not catch a conflict between, say,
java8 and liteproto, since no Truth module depends on both
of those. If we wanted, we could create such a module.
-->
</rules>
</configuration>
<goals>
<goal>enforce</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>${gwt.version}</version>
</plugin>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.6.1</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<!--
Force a version >2.7 for this parent project. If we use the current
default of 2.7, Maven ignores this parent project's configuration when
running maven-javadoc-plugin in children during releases.
-->
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-javadoc-plugin.version}</version>
</plugin>
<!--
Similar. Without this, Maven tries to run maven-enforcer-plugin 1.0,
and it fails to construct an instance of the rule class, apparently
because of a mismatch between the new Maven APIs and the old Enforcer
APIs.
-->
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${maven-enforcer-plugin.version}</version>
</plugin>
</plugins>
</build>
</project>