1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <parent> 6 <artifactId>TextSecureServer</artifactId> 7 <groupId>org.whispersystems.textsecure</groupId> 8 <version>JGITVER</version> 9 </parent> 10 <modelVersion>4.0.0</modelVersion> 11 <artifactId>service</artifactId> 12 13 <properties> 14 <firebase-admin.version>9.2.0</firebase-admin.version> 15 <java-uuid-generator.version>4.3.0</java-uuid-generator.version> 16 <sqlite4java.version>1.0.392</sqlite4java.version> 17 </properties> 18 19 <dependencies> 20 <dependency> 21 <groupId>io.swagger.core.v3</groupId> 22 <artifactId>swagger-jaxrs2</artifactId> 23 <version>${swagger.version}</version> 24 <exclusions> 25 <!-- org.yaml:snakeyaml is causing a dependency convergence error --> 26 <exclusion> 27 <groupId>org.yaml</groupId> 28 <artifactId>snakeyaml</artifactId> 29 </exclusion> 30 </exclusions> 31 </dependency> 32 <dependency> 33 <groupId>jakarta.servlet</groupId> 34 <artifactId>jakarta.servlet-api</artifactId> 35 </dependency> 36 <dependency> 37 <groupId>jakarta.validation</groupId> 38 <artifactId>jakarta.validation-api</artifactId> 39 </dependency> 40 <dependency> 41 <groupId>jakarta.ws.rs</groupId> 42 <artifactId>jakarta.ws.rs-api</artifactId> 43 </dependency> 44 45 <dependency> 46 <groupId>org.whispersystems.textsecure</groupId> 47 <artifactId>event-logger</artifactId> 48 <version>${project.version}</version> 49 </dependency> 50 <dependency> 51 <groupId>org.whispersystems.textsecure</groupId> 52 <artifactId>websocket-resources</artifactId> 53 <version>${project.version}</version> 54 </dependency> 55 <dependency> 56 <groupId>org.signal</groupId> 57 <artifactId>libsignal-server</artifactId> 58 </dependency> 59 60 <dependency> 61 <groupId>io.dropwizard</groupId> 62 <artifactId>dropwizard-core</artifactId> 63 </dependency> 64 <dependency> 65 <groupId>io.dropwizard</groupId> 66 <artifactId>dropwizard-auth</artifactId> 67 </dependency> 68 <dependency> 69 <groupId>io.dropwizard</groupId> 70 <artifactId>dropwizard-client</artifactId> 71 </dependency> 72 <dependency> 73 <groupId>io.dropwizard</groupId> 74 <artifactId>dropwizard-db</artifactId> 75 </dependency> 76 <dependency> 77 <groupId>io.dropwizard</groupId> 78 <artifactId>dropwizard-logging</artifactId> 79 </dependency> 80 <dependency> 81 <groupId>io.dropwizard</groupId> 82 <artifactId>dropwizard-metrics</artifactId> 83 </dependency> 84 <dependency> 85 <groupId>io.dropwizard</groupId> 86 <artifactId>dropwizard-util</artifactId> 87 </dependency> 88 <dependency> 89 <groupId>io.dropwizard</groupId> 90 <artifactId>dropwizard-servlets</artifactId> 91 </dependency> 92 <dependency> 93 <groupId>io.dropwizard</groupId> 94 <artifactId>dropwizard-lifecycle</artifactId> 95 </dependency> 96 <dependency> 97 <groupId>io.dropwizard</groupId> 98 <artifactId>dropwizard-jersey</artifactId> 99 </dependency> 100 <dependency> 101 <groupId>io.dropwizard</groupId> 102 <artifactId>dropwizard-jetty</artifactId> 103 </dependency> 104 <dependency> 105 <groupId>io.dropwizard</groupId> 106 <artifactId>dropwizard-validation</artifactId> 107 </dependency> 108 <dependency> 109 <groupId>io.dropwizard</groupId> 110 <artifactId>dropwizard-migrations</artifactId> 111 <scope>runtime</scope> 112 </dependency> 113 114 <dependency> 115 <groupId>org.slf4j</groupId> 116 <artifactId>slf4j-api</artifactId> 117 </dependency> 118 <dependency> 119 <groupId>ch.qos.logback</groupId> 120 <artifactId>logback-core</artifactId> 121 </dependency> 122 <dependency> 123 <groupId>ch.qos.logback</groupId> 124 <artifactId>logback-access</artifactId> 125 </dependency> 126 <dependency> 127 <groupId>ch.qos.logback</groupId> 128 <artifactId>logback-classic</artifactId> 129 </dependency> 130 <dependency> 131 <groupId>net.logstash.logback</groupId> 132 <artifactId>logstash-logback-encoder</artifactId> 133 </dependency> 134 135 <dependency> 136 <groupId>io.dropwizard.metrics</groupId> 137 <artifactId>metrics-core</artifactId> 138 </dependency> 139 <dependency> 140 <groupId>io.dropwizard.metrics</groupId> 141 <artifactId>metrics-healthchecks</artifactId> 142 </dependency> 143 <dependency> 144 <groupId>io.dropwizard.metrics</groupId> 145 <artifactId>metrics-annotation</artifactId> 146 </dependency> 147 <dependency> 148 <groupId>org.glassfish.jersey.core</groupId> 149 <artifactId>jersey-common</artifactId> 150 </dependency> 151 <dependency> 152 <groupId>org.glassfish.jersey.core</groupId> 153 <artifactId>jersey-server</artifactId> 154 </dependency> 155 <dependency> 156 <groupId>org.glassfish.jersey.core</groupId> 157 <artifactId>jersey-client</artifactId> 158 </dependency> 159 <dependency> 160 <groupId>org.glassfish.jaxb</groupId> 161 <artifactId>jaxb-runtime</artifactId> 162 </dependency> 163 164 <dependency> 165 <groupId>io.dropwizard</groupId> 166 <artifactId>dropwizard-testing</artifactId> 167 <scope>test</scope> 168 </dependency> 169 170 <dependency> 171 <groupId>party.iroiro.luajava</groupId> 172 <artifactId>luajava</artifactId> 173 <version>${luajava.version}</version> 174 <scope>test</scope> 175 </dependency> 176 <dependency> 177 <groupId>party.iroiro.luajava</groupId> 178 <artifactId>lua51</artifactId> 179 <version>${luajava.version}</version> 180 <scope>test</scope> 181 </dependency> 182 <dependency> 183 <groupId>party.iroiro.luajava</groupId> 184 <artifactId>lua51-platform</artifactId> 185 <version>${luajava.version}</version> 186 <classifier>natives-desktop</classifier> 187 <scope>runtime</scope> 188 </dependency> 189 190 <dependency> 191 <groupId>org.eclipse.jetty.websocket</groupId> 192 <artifactId>websocket-jetty-api</artifactId> 193 </dependency> 194 <dependency> 195 <groupId>org.eclipse.jetty</groupId> 196 <artifactId>jetty-servlets</artifactId> 197 </dependency> 198 199 <dependency> 200 <groupId>org.apache.commons</groupId> 201 <artifactId>commons-lang3</artifactId> 202 </dependency> 203 <dependency> 204 <groupId>org.apache.commons</groupId> 205 <artifactId>commons-csv</artifactId> 206 </dependency> 207 208 <dependency> 209 <groupId>com.google.firebase</groupId> 210 <artifactId>firebase-admin</artifactId> 211 <version>${firebase-admin.version}</version> 212 </dependency> 213 214 <dependency> 215 <groupId>com.google.code.findbugs</groupId> 216 <artifactId>jsr305</artifactId> 217 </dependency> 218 219 <dependency> 220 <groupId>io.github.resilience4j</groupId> 221 <artifactId>resilience4j-circuitbreaker</artifactId> 222 </dependency> 223 <dependency> 224 <groupId>io.github.resilience4j</groupId> 225 <artifactId>resilience4j-retry</artifactId> 226 </dependency> 227 <dependency> 228 <groupId>io.github.resilience4j</groupId> 229 <artifactId>resilience4j-reactor</artifactId> 230 </dependency> 231 232 <dependency> 233 <groupId>io.grpc</groupId> 234 <artifactId>grpc-netty-shaded</artifactId> 235 <scope>runtime</scope> 236 </dependency> 237 <dependency> 238 <groupId>io.grpc</groupId> 239 <artifactId>grpc-protobuf</artifactId> 240 </dependency> 241 <dependency> 242 <groupId>io.grpc</groupId> 243 <artifactId>grpc-stub</artifactId> 244 </dependency> 245 <!-- Needed for gRPC with Java 9+ --> 246 <dependency> 247 <groupId>org.apache.tomcat</groupId> 248 <artifactId>annotations-api</artifactId> 249 <scope>provided</scope> 250 </dependency> 251 252 <dependency> 253 <groupId>io.micrometer</groupId> 254 <artifactId>micrometer-core</artifactId> 255 </dependency> 256 <dependency> 257 <groupId>io.micrometer</groupId> 258 <artifactId>micrometer-registry-statsd</artifactId> 259 </dependency> 260 <dependency> 261 <groupId>org.coursera</groupId> 262 <artifactId>dropwizard-metrics-datadog</artifactId> 263 </dependency> 264 <dependency> 265 <groupId>com.fasterxml.jackson.core</groupId> 266 <artifactId>jackson-core</artifactId> 267 </dependency> 268 <dependency> 269 <groupId>com.fasterxml.jackson.core</groupId> 270 <artifactId>jackson-annotations</artifactId> 271 </dependency> 272 <dependency> 273 <groupId>com.fasterxml.jackson.core</groupId> 274 <artifactId>jackson-databind</artifactId> 275 </dependency> 276 <dependency> 277 <groupId>com.fasterxml.jackson.dataformat</groupId> 278 <artifactId>jackson-dataformat-yaml</artifactId> 279 </dependency> 280 <dependency> 281 <groupId>com.fasterxml.jackson.datatype</groupId> 282 <artifactId>jackson-datatype-jsr310</artifactId> 283 </dependency> 284 <dependency> 285 <groupId>com.fasterxml.jackson.jaxrs</groupId> 286 <artifactId>jackson-jaxrs-json-provider</artifactId> 287 </dependency> 288 289 <dependency> 290 <groupId>com.salesforce.servicelibs</groupId> 291 <artifactId>reactor-grpc-stub</artifactId> 292 </dependency> 293 294 <dependency> 295 <groupId>software.amazon.awssdk</groupId> 296 <artifactId>apache-client</artifactId> 297 </dependency> 298 <dependency> 299 <groupId>software.amazon.awssdk</groupId> 300 <artifactId>netty-nio-client</artifactId> 301 </dependency> 302 <dependency> 303 <groupId>software.amazon.awssdk</groupId> 304 <artifactId>sts</artifactId> 305 </dependency> 306 <dependency> 307 <groupId>software.amazon.awssdk</groupId> 308 <artifactId>s3</artifactId> 309 </dependency> 310 <dependency> 311 <groupId>software.amazon.awssdk</groupId> 312 <artifactId>dynamodb</artifactId> 313 </dependency> 314 <dependency> 315 <groupId>software.amazon.awssdk</groupId> 316 <artifactId>appconfig</artifactId> 317 </dependency> 318 <dependency> 319 <groupId>software.amazon.awssdk</groupId> 320 <artifactId>appconfigdata</artifactId> 321 </dependency> 322 <dependency> 323 <groupId>com.amazonaws</groupId> 324 <artifactId>dynamodb-lock-client</artifactId> 325 <version>1.2.0</version> 326 <exclusions> 327 <exclusion> 328 <groupId>commons-logging</groupId> 329 <artifactId>commons-logging</artifactId> 330 </exclusion> 331 </exclusions> 332 </dependency> 333 334 <dependency> 335 <groupId>io.lettuce</groupId> 336 <artifactId>lettuce-core</artifactId> 337 </dependency> 338 339 <dependency> 340 <groupId>com.eatthepath</groupId> 341 <artifactId>pushy</artifactId> 342 </dependency> 343 <dependency> 344 <groupId>com.eatthepath</groupId> 345 <artifactId>pushy-dropwizard-metrics-listener</artifactId> 346 </dependency> 347 348 <dependency> 349 <groupId>com.vdurmont</groupId> 350 <artifactId>semver4j</artifactId> 351 </dependency> 352 353 <dependency> 354 <groupId>com.google.guava</groupId> 355 <artifactId>guava</artifactId> 356 </dependency> 357 358 <dependency> 359 <groupId>com.google.protobuf</groupId> 360 <artifactId>protobuf-java</artifactId> 361 </dependency> 362 363 <dependency> 364 <groupId>com.googlecode.libphonenumber</groupId> 365 <artifactId>libphonenumber</artifactId> 366 </dependency> 367 368 <dependency> 369 <groupId>net.sourceforge.argparse4j</groupId> 370 <artifactId>argparse4j</artifactId> 371 </dependency> 372 373 <dependency> 374 <groupId>org.glassfish.jersey.test-framework</groupId> 375 <artifactId>jersey-test-framework-core</artifactId> 376 <scope>test</scope> 377 </dependency> 378 <dependency> 379 <groupId>org.glassfish.jersey.test-framework.providers</groupId> 380 <artifactId>jersey-test-framework-provider-grizzly2</artifactId> 381 <scope>test</scope> 382 <exclusions> 383 <exclusion> 384 <groupId>javax.servlet</groupId> 385 <artifactId>javax.servlet-api</artifactId> 386 </exclusion> 387 </exclusions> 388 </dependency> 389 390 <dependency> 391 <groupId>com.almworks.sqlite4java</groupId> 392 <artifactId>sqlite4java</artifactId> 393 <version>${sqlite4java.version}</version> 394 <scope>test</scope> 395 </dependency> 396 397 <dependency> 398 <groupId>io.projectreactor</groupId> 399 <artifactId>reactor-core</artifactId> 400 </dependency> 401 <dependency> 402 <groupId>io.projectreactor</groupId> 403 <artifactId>reactor-core-micrometer</artifactId> 404 </dependency> 405 <dependency> 406 <groupId>io.vavr</groupId> 407 <artifactId>vavr</artifactId> 408 </dependency> 409 410 <dependency> 411 <groupId>org.junit.jupiter</groupId> 412 <artifactId>junit-jupiter-params</artifactId> 413 <scope>test</scope> 414 </dependency> 415 416 <dependency> 417 <groupId>io.projectreactor</groupId> 418 <artifactId>reactor-test</artifactId> 419 </dependency> 420 421 <dependency> 422 <groupId>org.signal</groupId> 423 <artifactId>embedded-redis</artifactId> 424 <scope>test</scope> 425 </dependency> 426 427 <dependency> 428 <groupId>com.fasterxml.uuid</groupId> 429 <artifactId>java-uuid-generator</artifactId> 430 <version>${java-uuid-generator.version}</version> 431 <scope>test</scope> 432 </dependency> 433 434 <dependency> 435 <groupId>com.amazonaws</groupId> 436 <artifactId>DynamoDBLocal</artifactId> 437 <version>1.23.0</version> 438 <scope>test</scope> 439 </dependency> 440 <dependency> 441 <groupId>io.github.ganadist.sqlite4java</groupId> 442 <artifactId>libsqlite4java-osx-aarch64</artifactId> 443 <version>${sqlite4java.version}</version> 444 <type>dylib</type> 445 <scope>test</scope> 446 </dependency> 447 448 <dependency> 449 <groupId>com.google.auth</groupId> 450 <artifactId>google-auth-library-oauth2-http</artifactId> 451 </dependency> 452 453 <dependency> 454 <groupId>com.google.cloud</groupId> 455 <artifactId>google-cloud-recaptchaenterprise</artifactId> 456 </dependency> 457 458 <dependency> 459 <groupId>com.stripe</groupId> 460 <artifactId>stripe-java</artifactId> 461 </dependency> 462 463 <dependency> 464 <groupId>com.braintreepayments.gateway</groupId> 465 <artifactId>braintree-java</artifactId> 466 </dependency> 467 468 <dependency> 469 <groupId>com.apollographql.apollo3</groupId> 470 <artifactId>apollo-api-jvm</artifactId> 471 <version>3.8.2</version> 472 </dependency> 473 474 </dependencies> 475 476 <profiles> 477 <profile> 478 <id>exclude-spam-filter</id> 479 <build> 480 <plugins> 481 <plugin> 482 <groupId>org.apache.maven.plugins</groupId> 483 <artifactId>maven-shade-plugin</artifactId> 484 <version>3.5.1</version> 485 <configuration> 486 <createDependencyReducedPom>true</createDependencyReducedPom> 487 <filters> 488 <filter> 489 <artifact>*:*</artifact> 490 <excludes> 491 <exclude>META-INF/*.SF</exclude> 492 <exclude>META-INF/*.DSA</exclude> 493 <exclude>META-INF/*.RSA</exclude> 494 </excludes> 495 </filter> 496 </filters> 497 </configuration> 498 <executions> 499 <execution> 500 <phase>package</phase> 501 <goals> 502 <goal>shade</goal> 503 </goals> 504 <configuration> 505 <transformers> 506 <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/> 507 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 508 <mainClass>org.whispersystems.textsecuregcm.WhisperServerService</mainClass> 509 </transformer> 510 </transformers> 511 </configuration> 512 </execution> 513 </executions> 514 </plugin> 515 516 <plugin> 517 <groupId>org.apache.maven.plugins</groupId> 518 <artifactId>maven-assembly-plugin</artifactId> 519 <version>3.6.0</version> 520 <configuration> 521 <descriptors> 522 <descriptor>assembly.xml</descriptor> 523 </descriptors> 524 </configuration> 525 <executions> 526 <execution> 527 <id>make-assembly</id> <!-- this is used for inheritance merges --> 528 <phase>package</phase> <!-- bind to the packaging phase --> 529 <goals> 530 <goal>single</goal> 531 </goals> 532 </execution> 533 </executions> 534 </plugin> 535 536 <plugin> 537 <groupId>org.codehaus.mojo</groupId> 538 <artifactId>properties-maven-plugin</artifactId> 539 <version>1.2.0</version> 540 <executions> 541 <execution> 542 <id>read-deploy-configuration</id> 543 <phase>deploy</phase> 544 <goals> 545 <goal>read-project-properties</goal> 546 </goals> 547 <configuration> 548 <files>${project.basedir}/config/deploy.properties</files> 549 </configuration> 550 </execution> 551 </executions> 552 </plugin> 553 554 <plugin> 555 <groupId>com.google.cloud.tools</groupId> 556 <artifactId>jib-maven-plugin</artifactId> 557 <executions> 558 <execution> 559 <phase>deploy</phase> 560 <goals> 561 <goal>build</goal> 562 </goals> 563 </execution> 564 </executions> 565 <configuration> 566 <from> 567 <image>eclipse-temurin@sha256:${docker.image.sha256}</image> 568 </from> 569 <to> 570 <image>${docker.repo}:${project.version}</image> 571 </to> 572 <container> 573 <mainClass>org.whispersystems.textsecuregcm.WhisperServerService</mainClass> 574 <jvmFlags> 575 <jvmFlag>-server</jvmFlag> 576 <jvmFlag>-Djava.awt.headless=true</jvmFlag> 577 <jvmFlag>-Djdk.nio.maxCachedBufferSize=262144</jvmFlag> 578 <jvmFlag>-Dlog4j2.formatMsgNoLookups=true</jvmFlag> 579 <jvmFlag>-XX:MaxRAMPercentage=75</jvmFlag> 580 <jvmFlag>-XX:+HeapDumpOnOutOfMemoryError</jvmFlag> 581 <jvmFlag>-XX:HeapDumpPath=/tmp/heapdump.bin</jvmFlag> 582 </jvmFlags> 583 <ports> 584 <port>8080</port> 585 </ports> 586 <creationTime>USE_CURRENT_TIMESTAMP</creationTime> 587 </container> 588 <extraDirectories> 589 <paths> 590 <path> 591 <from>${project.basedir}/config</from> 592 <includes>*.yml</includes> 593 <into>/usr/share/signal/</into> 594 </path> 595 </paths> 596 </extraDirectories> 597 </configuration> 598 </plugin> 599 </plugins> 600 </build> 601 </profile> 602 <profile> 603 <id>include-spam-filter</id> 604 <build> 605 <plugins> 606 <plugin> 607 <groupId>com.google.cloud.tools</groupId> 608 <artifactId>jib-maven-plugin</artifactId> 609 <configuration> 610 <!-- we don't want jib to execute on this module --> 611 <skip>true</skip> 612 </configuration> 613 </plugin> 614 </plugins> 615 </build> 616 </profile> 617 </profiles> 618 619 <build> 620 <finalName>${project.parent.artifactId}-${project.version}</finalName> 621 <plugins> 622 <plugin> 623 <groupId>org.codehaus.mojo</groupId> 624 <artifactId>templating-maven-plugin</artifactId> 625 <version>1.0.0</version> 626 <executions> 627 <execution> 628 <id>filter-src</id> 629 <goals> 630 <goal>filter-sources</goal> 631 </goals> 632 </execution> 633 </executions> 634 </plugin> 635 636 <plugin> 637 <groupId>org.apache.maven.plugins</groupId> 638 <artifactId>maven-surefire-plugin</artifactId> 639 <version>3.1.2</version> 640 <configuration> 641 <!-- work around PATCH not being a supported method on HttpUrlConnection --> 642 <argLine>--add-opens=java.base/java.net=ALL-UNNAMED</argLine> 643 </configuration> 644 </plugin> 645 646 <plugin> 647 <groupId>org.apache.maven.plugins</groupId> 648 <artifactId>maven-jar-plugin</artifactId> 649 <executions> 650 <execution> 651 <goals> 652 <goal>test-jar</goal> 653 </goals> 654 </execution> 655 </executions> 656 </plugin> 657 658 <plugin> 659 <groupId>org.codehaus.mojo</groupId> 660 <artifactId>exec-maven-plugin</artifactId> 661 <version>3.1.0</version> 662 <executions> 663 <execution> 664 <id>check-all-service-config</id> 665 <phase>verify</phase> 666 <goals> 667 <goal>java</goal> 668 </goals> 669 </execution> 670 </executions> 671 <configuration> 672 <mainClass>org.whispersystems.textsecuregcm.CheckServiceConfigurations</mainClass> 673 <classpathScope>test</classpathScope> 674 <arguments> 675 <argument>${project.basedir}/config</argument> 676 </arguments> 677 </configuration> 678 </plugin> 679 680 <plugin> 681 <groupId>com.github.aoudiamoncef</groupId> 682 <artifactId>apollo-client-maven-plugin</artifactId> 683 <version>5.0.0</version> 684 <executions> 685 <execution> 686 <goals> 687 <goal>generate</goal> 688 </goals> 689 <configuration> 690 <services> 691 <braintree> 692 <compilationUnit> 693 <name>braintree</name> 694 <compilerParams> 695 <schemaPackageName>com.braintree.graphql.client</schemaPackageName> 696 </compilerParams> 697 </compilationUnit> 698 </braintree> 699 </services> 700 </configuration> 701 </execution> 702 </executions> 703 </plugin> 704 </plugins> 705 </build> 706 </project>