<?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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>com.exonum.binding</groupId>
    <artifactId>exonum-java-binding-parent</artifactId>
    <version>0.8.0</version>
  </parent>

  <artifactId>exonum-java-binding-bom</artifactId>
  <version>0.8.0</version>
  <packaging>pom</packaging>

  <name>Exonum Java Binding: Bill of Materials</name>

  <dependencyManagement>
    <dependencies>
      <!-- Exonum Java Binding artefacts. -->
      <dependency>
        <groupId>com.exonum.binding</groupId>
        <artifactId>exonum-java-binding-core</artifactId>
        <version>${project.version}</version>
      </dependency>

      <dependency>
        <groupId>com.exonum.binding</groupId>
        <artifactId>exonum-java-binding-common</artifactId>
        <version>${project.version}</version>
      </dependency>

      <dependency>
        <groupId>com.exonum.binding</groupId>
        <artifactId>exonum-time-oracle</artifactId>
        <version>${project.version}</version>
      </dependency>

      <dependency>
        <groupId>com.exonum.binding</groupId>
        <artifactId>exonum-testkit</artifactId>
        <version>${project.version}</version>
      </dependency>

      <!-- Exported third-party artefacts the services depend upon. -->
      <dependency>
        <groupId>io.vertx</groupId>
        <artifactId>vertx-web-client</artifactId>
        <version>${vertx.version}</version>
      </dependency>

      <dependency>
        <groupId>io.vertx</groupId>
        <artifactId>vertx-junit5</artifactId>
        <version>${vertx.version}</version>
      </dependency>

      <dependency>
        <groupId>io.vertx</groupId>
        <artifactId>vertx-web</artifactId>
        <version>${vertx.version}</version>
      </dependency>

      <!-- Guava does not appear in our APIs (unlike Gson, Guice or Vertx), but
           it is a great candidate for a 'provided' dependency because of its considerable size.
           Specifying it as such, however, makes it impossible to release a compatible version
           of Exonum with incompatible Guava version (the Guava team, however, guarantees to keep
           compatibility since 21.0 for non-@Beta APIs: https://groups.google.com/forum/#!topic/guava-discuss/rX-QXo-67ZU )

           If users need to package their own (which seems to be rarely needed), it must work.
            -->
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${guava.version}</version>
      </dependency>

      <dependency>
        <groupId>com.google.inject</groupId>
        <artifactId>guice</artifactId>
        <version>${guice.version}</version>
        <classifier>no_aop</classifier>
      </dependency>

      <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>${gson.version}</version>
      </dependency>

      <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>${protobuf.version}</version>
      </dependency>

      <dependency>
        <groupId>org.pf4j</groupId>
        <artifactId>pf4j</artifactId>
        <version>${pf4j.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-bom</artifactId>
        <version>${log4j.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

    </dependencies>
  </dependencyManagement>
</project>
