| <?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>1.0-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.0.0</maven-javadoc-plugin.version> |
| <maven-enforcer-plugin.version>3.0.0-M2</maven-enforcer-plugin.version> |
| |
| <!-- Properties for multiple-artifact deps. --> |
| <auto-value.version>1.6.3</auto-value.version> |
| <checker-framework.version>2.5.5</checker-framework.version> |
| <guava.version>27.0.1</guava.version> |
| <gwt.version>2.8.2</gwt.version> |
| <protobuf.version>3.6.1</protobuf.version> |
| <!-- Property for protobuf-lite protocArtifact, which isn't a "normal" Maven dep. --> |
| <protobuf-lite.protoc.version>3.1.0</protobuf-lite.protoc.version> |
| <!-- Property for protobuf-java protocArtifact, which ought to be the same as protobuf.version but can't be internally at the moment. --> |
| <protobuf.protoc.version>3.5.1</protobuf.protoc.version> |
| |
| <!-- Property for an extension, since Maven doesn't have extensionManagement. --> |
| <os-maven-plugin.version>1.5.0.Final</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.version}-android</version> |
| </dependency> |
| <dependency> |
| <groupId>org.checkerframework</groupId> |
| <artifactId>checker-compat-qual</artifactId> |
| <version>${checker-framework.version}</version> |
| </dependency> |
| <dependency> |
| <groupId>org.checkerframework</groupId> |
| <artifactId>checker-qual</artifactId> |
| <version>${checker-framework.version}</version> |
| </dependency> |
| <dependency> |
| <groupId>junit</groupId> |
| <artifactId>junit</artifactId> |
| <version>4.12</version> |
| </dependency> |
| <dependency> |
| <groupId>com.googlecode.java-diff-utils</groupId> |
| <artifactId>diffutils</artifactId> |
| <version>1.3.0</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.auto.value</groupId> |
| <artifactId>auto-value</artifactId> |
| <version>${auto-value.version}</version> |
| </dependency> |
| <dependency> |
| <groupId>com.google.guava</groupId> |
| <artifactId>guava-gwt</artifactId> |
| <version>${guava.version}-jre</version> |
| </dependency> |
| <dependency> |
| <groupId>com.google.guava</groupId> |
| <artifactId>guava-testlib</artifactId> |
| <version>${guava.version}-android</version> |
| </dependency> |
| <dependency> |
| <groupId>com.google.testing.compile</groupId> |
| <artifactId>compile-testing</artifactId> |
| <version>0.15</version> |
| <exclusions> |
| <exclusion> |
| <groupId>com.google.truth</groupId> |
| <artifactId>truth</artifactId> |
| </exclusion> |
| <!-- TODO(cpovirk): Remove after a Compile-Testing release moves this to test scope. --> |
| <exclusion> |
| <groupId>com.google.truth.extensions</groupId> |
| <artifactId>truth-java8-extension</artifactId> |
| </exclusion> |
| </exclusions> |
| </dependency> |
| <dependency> |
| <groupId>com.google.errorprone</groupId> |
| <artifactId>error_prone_annotations</artifactId> |
| <version>2.3.1</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.2</version> |
| </dependency> |
| </dependencies> |
| </dependencyManagement> |
| <description> |
| Parent metdata 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> |
| <mailingLists> |
| <mailingList> |
| <name>Announcements List</name> |
| <post>truth-announce@googlecode.com</post> |
| </mailingList> |
| <mailingList> |
| <name>User List</name> |
| <post>truth-users@googlecode.com</post> |
| </mailingList> |
| <mailingList> |
| <name>Developer List</name> |
| <post>truth-dev@googlecode.com</post> |
| </mailingList> |
| </mailingLists> |
| <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> |
| <plugin> |
| <artifactId>maven-javadoc-plugin</artifactId> |
| <version>${maven-javadoc-plugin.version}</version> |
| <configuration> |
| <additionalOptions> |
| <additionalOption>-Xdoclint:-html</additionalOption> |
| </additionalOptions> |
| <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> |
| <links> |
| <!-- TODO(cpovirk): Link to the version that we depend on? --> |
| <link>https://google.github.io/guava/releases/snapshot-jre/api/docs</link> |
| </links> |
| <source>8</source> |
| </configuration> |
| </plugin> |
| <plugin> |
| <artifactId>maven-jar-plugin</artifactId> |
| <version>2.5</version> <!-- work around ubuntu bug --> |
| </plugin> |
| <plugin> |
| <groupId>org.codehaus.mojo</groupId> |
| <artifactId>animal-sniffer-maven-plugin</artifactId> |
| <version>1.14</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.1</version> |
| <configuration> |
| <source>1.7</source> |
| <target>1.7</target> |
| <testSource>1.8</testSource> |
| <testTarget>1.8</testTarget> |
| </configuration> |
| </plugin> |
| <plugin> |
| <artifactId>maven-source-plugin</artifactId> |
| <version>3.0.1</version> |
| </plugin> |
| <plugin> |
| <artifactId>maven-surefire-plugin</artifactId> |
| <version>2.12.4</version> |
| </plugin> |
| <plugin> |
| <artifactId>maven-enforcer-plugin</artifactId> |
| <version>${maven-enforcer-plugin.version}</version> |
| <executions> |
| <execution> |
| <id>enforce</id> |
| <configuration> |
| <rules> |
| <!-- |
| Perhaps surprisingly, requireUpperBoundDeps catches problems |
| that dependencyConvergence does not: If we use |
| dependencyManagement to force Maven to use an *old* version |
| of a dependency, that will satisfy dependencyConvergence |
| (because the version is now consistent), but it will not |
| satisfy requireUpperBoundDeps, which apparently still sees |
| the original request for the newer version. |
| requireUpperBoundDeps's behavior is probably a good thing. |
| |
| But, in what seems like a bug, dependencyConvergence catches |
| certain upper-bound problems that requireUpperBoundDeps does |
| not. To be clear, it's usually *not* a bug for |
| dependencyConvergence to give an error when |
| requireUpperBoundDeps does not: dependencyConvergence is in |
| some ways a stricter test than requireUpperBoundDeps. What |
| I'm seeing here is weirder: When I changed liteproto to |
| request checker-compat-qual 2.1.0 and |
| error_prone_annotations 2.0.9, both older versions than |
| those inherited through core Truth, dependencyConvergence |
| flagged both as expected, but requireUpperBoundDeps flagged |
| only error_prone_annotations. The reason for this may have |
| something to do with guava-25.1-android's dependency on the |
| even older checker-compat-qual 2.0.0: When I updated Truth |
| to depend on guava-26.0, which depends on |
| checker-compat-qual 2.5.3, then requireUpperBoundDeps |
| detected the problem. |
| |
| I filed a bug against Maven: |
| https://issues.apache.org/jira/browse/MENFORCER-316 |
| --> |
| <requireUpperBoundDeps> |
| <excludes> |
| <!-- We have some deps on guava-android and others on guava-jre. --> |
| <exclude>com.google.guava:guava</exclude> |
| </excludes> |
| </requireUpperBoundDeps> |
| <!-- |
| This should be a no-op for us, since we try to list |
| everything in dependencyManagement. But it should at least |
| make sure that we do remember to put new deps into |
| dependencyManagement. It might also flag conflicts that |
| exist only in transitive dependencies. If that becomes too |
| much of a pain, we can back this check out. |
| --> |
| <dependencyConvergence /> |
| <!-- |
| Note that neither of these rules would 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.5.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> |