1<?xml version="1.0" encoding="UTF-8"?> 2<project 3 xmlns="http://maven.apache.org/POM/4.0.0" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 6 <modelVersion>4.0.0</modelVersion> 7 <groupId>com.google.truth</groupId> 8 <artifactId>truth-parent</artifactId> 9 <version>HEAD-SNAPSHOT</version> 10 <packaging>pom</packaging> 11 <name>Truth (Parent)</name> 12 <properties> 13 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 14 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 15 16 <!-- Properties for multiple-artifact deps. --> 17 <auto-value.version>1.10.1</auto-value.version> 18 <!-- 19 We have a separate property for each flavor of Guava (instead of a shared 20 version without the -android and -jre suffixes) because that lets 21 Dependabot update our Guava versions. 22 --> 23 <guava.android.version>32.0.1-android</guava.android.version> 24 <!-- 25 Also, we have this comment in between the 2 flavors of Guava. That's 26 also to smooth the Dependabot update process: Dependabot generates a 27 separate PR for each flavor. Even if we approve both at the same 28 time, one gets submitted before the other, and 29 the other ends up with a merge conflict. That requires reapprovals. 30 --> 31 <guava.jre.version>32.0.0-jre</guava.jre.version> 32 <gwt.version>2.9.0</gwt.version> 33 <protobuf.version>3.23.2</protobuf.version> 34 <!-- Property for protobuf-lite protocArtifact, which isn't a "normal" Maven dep. --> 35 <!-- TODO(cpovirk): Use protobuf.version instead. But that requires finding the new way to request the Lite runtime. --> 36 <protobuf-lite.protoc.version>3.1.0</protobuf-lite.protoc.version> 37 38 <!-- Property for an extension, since Maven doesn't have extensionManagement. --> 39 <os-maven-plugin.version>1.7.1</os-maven-plugin.version> 40 41 <!-- Default to no additional options (for Java 8). Overridden by a profile. --> 42 <conditionalJavadoc9PlusOptions></conditionalJavadoc9PlusOptions> 43 </properties> 44 <dependencyManagement> 45 <dependencies> 46 <dependency> 47 <groupId>com.google.truth</groupId> 48 <artifactId>truth</artifactId> 49 <version>${project.version}</version> 50 </dependency> 51 <dependency> 52 <groupId>com.google.truth.extensions</groupId> 53 <artifactId>truth-liteproto-extension</artifactId> 54 <version>${project.version}</version> 55 </dependency> 56 <!-- 57 We could add the other modules of Truth, but there's no need because no 58 modules depend on them yet. 59 --> 60 <dependency> 61 <!-- 62 In addition to setting the version of Guava that's used when Truth 63 depends directly on com.google.common:guava, this section also 64 overrides the version that's pulled in transitively by guava-gwt 65 (which is a test-scope dependency of core Truth). The Guava APIs 66 "missing" in guava-android might cause us problems down the line if we 67 actually started to run nontrivial GWT tests; I'm not sure. 68 --> 69 <groupId>com.google.guava</groupId> 70 <artifactId>guava</artifactId> 71 <version>${guava.android.version}</version> 72 </dependency> 73 <dependency> 74 <groupId>org.checkerframework</groupId> 75 <artifactId>checker-qual</artifactId> 76 <version>3.35.0</version> 77 </dependency> 78 <dependency> 79 <groupId>junit</groupId> 80 <artifactId>junit</artifactId> 81 <version>4.13.2</version> 82 </dependency> 83 <dependency> 84 <groupId>com.google.gwt</groupId> 85 <artifactId>gwt-user</artifactId> 86 <version>${gwt.version}</version> 87 </dependency> 88 <dependency> 89 <groupId>com.google.auto.value</groupId> 90 <artifactId>auto-value-annotations</artifactId> 91 <version>${auto-value.version}</version> 92 </dependency> 93 <dependency> 94 <groupId>com.google.guava</groupId> 95 <artifactId>guava-gwt</artifactId> 96 <version>${guava.jre.version}</version> 97 </dependency> 98 <dependency> 99 <groupId>com.google.guava</groupId> 100 <artifactId>guava-testlib</artifactId> 101 <version>${guava.android.version}</version> 102 </dependency> 103 <dependency> 104 <groupId>com.google.errorprone</groupId> 105 <artifactId>error_prone_annotations</artifactId> 106 <version>2.19.1</version> 107 </dependency> 108 <dependency> 109 <groupId>com.google.protobuf</groupId> 110 <artifactId>protobuf-java</artifactId> 111 <version>${protobuf.version}</version> 112 </dependency> 113 <dependency> 114 <groupId>com.google.protobuf</groupId> 115 <artifactId>protobuf-lite</artifactId> 116 <version>3.0.1</version> 117 </dependency> 118 <dependency> 119 <groupId>com.google.re2j</groupId> 120 <artifactId>re2j</artifactId> 121 <version>1.7</version> 122 </dependency> 123 <dependency> 124 <groupId>org.ow2.asm</groupId> 125 <artifactId>asm</artifactId> 126 <version>9.5</version> 127 </dependency> 128 <dependency> 129 <groupId>com.google.jsinterop</groupId> 130 <artifactId>jsinterop-annotations</artifactId> 131 <version>2.0.0</version> 132 </dependency> 133 </dependencies> 134 </dependencyManagement> 135 <description> 136 Parent metadata for Truth, a Java assertion framework. 137 </description> 138 <modules> 139 <module>core</module> 140 <module>extensions</module> 141 </modules> 142 <prerequisites><maven>3.1.1</maven></prerequisites> 143 <developers> 144 <developer> 145 <id>cgruber</id> 146 <name>Christian Gruber</name> 147 <email>christianedwardgruber@gmail.com</email> 148 <url>http://www.geekinasuit.com/</url> 149 <roles> 150 <role>creator</role> 151 <role>developer</role> 152 </roles> 153 <timezone>-8</timezone> 154 </developer> 155 <developer> 156 <id>kak</id> 157 <name>Kurt Alfred Kluever</name> 158 <roles> 159 <role>evolver</role> 160 <role>developer</role> 161 </roles> 162 <timezone>-5</timezone> 163 </developer> 164 <developer> 165 <id>dsaff</id> 166 <name>David Saff</name> 167 <roles> 168 <role>creator</role> 169 <role>developer</role> 170 </roles> 171 <timezone>-5</timezone> 172 </developer> 173 <developer> 174 <id>hagbard</id> 175 <name>David B</name> 176 <roles> 177 <role>creator</role> 178 <role>developer</role> 179 </roles> 180 <timezone>+2</timezone> 181 </developer> 182 </developers> 183 <url>http://github.com/google/truth</url> 184 <licenses> 185 <license> 186 <name>The Apache Software License, Version 2.0</name> 187 <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> 188 <distribution>repo</distribution> 189 </license> 190 </licenses> 191 <issueManagement> 192 <system>Github</system> 193 <url>https://github.com/google/truth/issues</url> 194 </issueManagement> 195 <ciManagement> 196 <system>Jenkins</system> 197 <url>https://travis-ci.org/google/truth</url> 198 </ciManagement> 199 <scm> 200 <connection>scm:git:git@github.com:google/truth.git</connection> 201 <url>scm:git:git@github.com:google/truth.git</url> 202 </scm> 203 <distributionManagement> 204 <snapshotRepository> 205 <id>sonatype-nexus-snapshots</id> 206 <name>Sonatype Nexus Snapshots</name> 207 <url>https://oss.sonatype.org/content/repositories/snapshots/</url> 208 </snapshotRepository> 209 <repository> 210 <id>sonatype-nexus-staging</id> 211 <name>Nexus Release Repository</name> 212 <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> 213 </repository> 214 </distributionManagement> 215 <build> 216 <pluginManagement> 217 <plugins> 218 <!-- https://stackoverflow.com/a/51093732/28465 --> 219 <plugin> 220 <groupId>org.apache.maven.plugins</groupId> 221 <artifactId>maven-site-plugin</artifactId> 222 <version>3.12.1</version> 223 </plugin> 224 <plugin> 225 <groupId>org.apache.maven.plugins</groupId> 226 <artifactId>maven-project-info-reports-plugin</artifactId> 227 <version>3.4.5</version> 228 </plugin> 229 <plugin> 230 <artifactId>maven-javadoc-plugin</artifactId> 231 <version>3.5.0</version> 232 <configuration> 233 <additionalOptions> 234 <additionalOption>-Xdoclint:-html ${conditionalJavadoc9PlusOptions}</additionalOption> 235 </additionalOptions> 236 <doctitle>Truth ${project.version}</doctitle> 237 <windowtitle>Truth ${project.version}</windowtitle> 238 <quiet>true</quiet> 239 <notimestamp>true</notimestamp> 240 <encoding>UTF-8</encoding> 241 <docencoding>UTF-8</docencoding> 242 <charset>UTF-8</charset> 243 <overview>overview.html</overview> 244 <detectJavaApiLink>false</detectJavaApiLink> 245 <links> 246 <!-- TODO(cpovirk): Link to the version that we depend on? --> 247 <link>https://guava.dev/releases/snapshot-jre/api/docs</link> 248 <link>https://protobuf.dev/reference/java/api-docs/</link> 249 <link>https://junit.org/junit4/javadoc/latest/</link> 250 <link>https://docs.oracle.com/javase/7/docs/api/</link> 251 </links> 252 <sourceFileExcludes> 253 <sourceFileExclude>**/super/**/*.java</sourceFileExclude> 254 </sourceFileExcludes> 255 </configuration> 256 </plugin> 257 <plugin> 258 <artifactId>maven-jar-plugin</artifactId> 259 <version>3.3.0</version> <!-- work around ubuntu bug --> 260 </plugin> 261 <plugin> 262 <groupId>org.codehaus.mojo</groupId> 263 <artifactId>animal-sniffer-maven-plugin</artifactId> 264 <version>1.23</version> 265 <configuration> 266 <signature> 267 <groupId>org.codehaus.mojo.signature</groupId> 268 <artifactId>java16-sun</artifactId> 269 <version>1.10</version> 270 </signature> 271 </configuration> 272 <executions> 273 <execution> 274 <id>check-java-version-compatibility</id> 275 <phase>test</phase> 276 <goals> 277 <goal>check</goal> 278 </goals> 279 </execution> 280 </executions> 281 </plugin> 282 <plugin> 283 <artifactId>maven-compiler-plugin</artifactId> 284 <version>3.11.0</version> 285 <configuration> 286 <source>1.8</source> 287 <target>1.8</target> 288 </configuration> 289 </plugin> 290 <plugin> 291 <artifactId>maven-source-plugin</artifactId> 292 <version>3.3.0</version> 293 </plugin> 294 <plugin> 295 <artifactId>maven-gpg-plugin</artifactId> 296 <version>3.1.0</version> 297 </plugin> 298 <plugin> 299 <artifactId>maven-surefire-plugin</artifactId> 300 <version>3.1.2</version> 301 </plugin> 302 <plugin> 303 <artifactId>maven-enforcer-plugin</artifactId> 304 <version>3.3.0</version> 305 <executions> 306 <execution> 307 <id>enforce</id> 308 <configuration> 309 <rules> 310 <requireUpperBoundDeps> 311 <excludes> 312 <!-- We have some deps on guava-android and others on guava-jre. --> 313 <exclude>com.google.guava:guava</exclude> 314 </excludes> 315 </requireUpperBoundDeps> 316 <!-- 317 Note that this rule would not catch a conflict between, say, 318 java8 and liteproto, since no Truth module depends on both 319 of those. If we wanted, we could create such a module. 320 --> 321 </rules> 322 </configuration> 323 <goals> 324 <goal>enforce</goal> 325 </goals> 326 </execution> 327 </executions> 328 </plugin> 329 <plugin> 330 <groupId>org.codehaus.mojo</groupId> 331 <artifactId>gwt-maven-plugin</artifactId> 332 <version>${gwt.version}</version> 333 </plugin> 334 <plugin> 335 <groupId>org.xolstice.maven.plugins</groupId> 336 <artifactId>protobuf-maven-plugin</artifactId> 337 <version>0.6.1</version> 338 </plugin> 339 </plugins> 340 </pluginManagement> 341 </build> 342 <profiles> 343 <profile> 344 <id>sonatype-oss-release</id> 345 <build> 346 <plugins> 347 <plugin> 348 <artifactId>maven-gpg-plugin</artifactId> 349 <executions> 350 <execution> 351 <id>sign-artifacts</id> 352 <phase>verify</phase> 353 <goals><goal>sign</goal></goals> 354 </execution> 355 </executions> 356 </plugin> 357 <plugin> 358 <artifactId>maven-source-plugin</artifactId> 359 <executions> 360 <execution> 361 <id>attach-sources</id> 362 <goals><goal>jar</goal></goals> 363 </execution> 364 </executions> 365 </plugin> 366 <plugin> 367 <artifactId>maven-javadoc-plugin</artifactId> 368 <executions> 369 <execution> 370 <id>attach-docs</id> 371 <goals><goal>jar</goal></goals> 372 </execution> 373 </executions> 374 </plugin> 375 </plugins> 376 </build> 377 </profile> 378 <profile> 379 <!-- 380 Passes JDK 11-12-specific `no-module-directories` flag to Javadoc tool, 381 which is required to make symbol search work correctly in the generated 382 pages. 383 384 This flag does not exist on 9-10 and 13+ (https://bugs.openjdk.java.net/browse/JDK-8215582). 385 386 Consider removing it once our release and test scripts are migrated to a recent JDK (17+). 387 --> 388 <id>javadocs-jdk11-12</id> 389 <activation> 390 <jdk>[11,13)</jdk> 391 </activation> 392 <properties> 393 <maven-javadoc-plugin.additionalJOptions>--no-module-directories</maven-javadoc-plugin.additionalJOptions> 394 </properties> 395 </profile> 396 <profile> 397 <id>javadocs-jdk9plus</id> 398 <activation> 399 <jdk>[9,)</jdk> 400 </activation> 401 <properties> 402 <conditionalJavadocOptions>--frames</conditionalJavadocOptions> 403 </properties> 404 </profile> 405 </profiles> 406</project> 407