<?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">
  <!-- Usage: As per the general contract of Maven builds a full build that compiles,
    runs tests, packages and installs build artifacts (jar files) in the local Maven
    repository can be executed via: mvn clean install. To generate a project site with
    various reports use the Maven site plugin: mvn clean install && mvn site && mvn site:stage
    -DstagingDirectory=<devsite> See the Maven site plugin for more details: http://maven.apache.org/plugins/maven-site-plugin/usage.html -->

  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.elastisys</groupId>
    <artifactId>elastisys-pom-public</artifactId>
    <version>1.0.0</version>
  </parent>
  <groupId>com.elastisys.scale</groupId>
  <artifactId>commons.root</artifactId>
  <version>2.3.2</version>
  <name>elastisys:scale :: commons :: root</name>
  <description>Common Java libraries and utilities for elastisys:scale-related software.</description>
  <packaging>pom</packaging>
  <inceptionYear>2011</inceptionYear>


  <modules>
    <module>json</module>
    <module>net</module>
    <module>rest</module>
    <module>server</module>
    <module>util</module>
    <module>logreplayer</module>
    <module>security</module>
    <module>openstack</module>
    <module>cli</module>
    <module>eventbus</module>
  </modules>

  <!-- Location of Git repository. Used to tag releases. -->
  <scm>
    <developerConnection>scm:git:git@github.com:elastisys/scale.commons.git</developerConnection>
    <tag>2.3.2</tag>
    <url>https://github.com/elastisys/scale.commons</url>
  </scm>

  <properties>
    <guice.version>3.0</guice.version>
    <apache.httpclient.version>4.5.6</apache.httpclient.version>
    <jetty.version>9.4.12.v20180830</jetty.version>
    <jaxrs.version>2.0.1</jaxrs.version>
    <servlet.api.version>3.1.0</servlet.api.version>

    <jersey.version>2.25.1</jersey.version>
    <jaxb.api.version>2.3.0</jaxb.api.version>
    <jaxb.core.version>2.3.0</jaxb.core.version>
    <jaxb.impl.version>2.3.0</jaxb.impl.version>
    <javax.activation.version>1.1.1</javax.activation.version>

    <commons.mail.version>1.4</commons.mail.version>
    <gson.version>2.8.0</gson.version>
    <slf4j.version>1.7.22</slf4j.version>
    <logback.version>1.1.9</logback.version>
    <joda.time.version>2.9.7</joda.time.version>
    <cron-utils.version>5.0.5</cron-utils.version>
    <commons.math.version>3.3</commons.math.version>
    <commons.lang.version>3.8.1</commons.lang.version>
    <args4j.version>2.33</args4j.version>
    <jose4j.version>0.4.4</jose4j.version>
    <bouncycastle.version>1.53</bouncycastle.version>
    <openstack4j.version>3.1.0</openstack4j.version>

    <!-- test dependencies -->
    <junit.version>4.12</junit.version>
    <mockito.version>1.10.19</mockito.version>
    <greenmail.version>1.4.1</greenmail.version>

  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.google.inject</groupId>
        <artifactId>guice</artifactId>
        <version>${guice.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.inject.extensions</groupId>
        <artifactId>guice-multibindings</artifactId>
        <version>${guice.version}</version>
      </dependency>
      <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>${joda.time.version}</version>
      </dependency>
      <dependency>
        <groupId>com.cronutils</groupId>
        <artifactId>cron-utils</artifactId>
        <version>${cron-utils.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>${apache.httpclient.version}</version>
      </dependency>
      <!-- Java mail support -->
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-email</artifactId>
        <version>${commons.mail.version}</version>
      </dependency>
      <!-- Mathematics/statistics library -->
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-math3</artifactId>
        <version>${commons.math.version}</version>
      </dependency>
      <!-- Class reflection utilities -->
      <dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-lang3</artifactId>
	<version>${commons.lang.version}</version>
      </dependency>

      <!-- logging -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <!-- Jakarta (Apache) Commons Logging bridge to SLF4J. -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <!-- capture java.util.logging with slf4j. Requires a bridge handler to be
        programatically installed. See http://www.slf4j.org/api/org/slf4j/bridge/SLF4JBridgeHandler.html -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jul-to-slf4j</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback.version}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${logback.version}</version>
      </dependency>

      <!-- JSON parsing -->
      <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>${gson.version}</version>
      </dependency>

      <!-- JAX-RS API -->
      <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>${jaxrs.version}</version>
      </dependency>
      <!-- Jersey and JAX-RS API -->
      <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
        <version>${jersey.version}</version>
      </dependency>
      <!-- Jersey REST client -->
      <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-client</artifactId>
        <version>${jersey.version}</version>
      </dependency>
      <!-- After Java 9, JAXB is no longer in the standard the java.se module. It
        is needed by jersey-client. -->
      <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>${jaxb.api.version}</version>
      </dependency>
      <!-- After Java 9, JAXB is no longer in the standard the java.se module. It
        is needed by jersey-client. -->
      <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>${jaxb.impl.version}</version>
      </dependency>
      <!-- After Java 9, JAXB is no longer in the standard the java.se module. It
        is needed by jersey-client. -->
      <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>${jaxb.core.version}</version>
      </dependency>
      <!-- After Java 9, javax.activation is no longer in the standard the java.se
        module. It is needed by jersey-client. -->
      <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>${javax.activation.version}</version>
      </dependency>


      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${servlet.api.version}</version>
      </dependency>

      <!-- Embeddable Jetty HTTP server -->
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-servlet</artifactId>
        <version>${jetty.version}</version>
      </dependency>
      <!-- Utility servlets and filters -->
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-servlets</artifactId>
        <version>${jetty.version}</version>
      </dependency>
      <!-- URL rewrite handlers -->
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-rewrite</artifactId>
        <version>${jetty.version}</version>
      </dependency>


      <!-- command-line parsing -->
      <dependency>
        <groupId>args4j</groupId>
        <artifactId>args4j</artifactId>
        <version>${args4j.version}</version>
      </dependency>

      <!-- Library for manipulating JSON Web Tokens (JWTs) -->
      <dependency>
        <groupId>org.bitbucket.b_c</groupId>
        <artifactId>jose4j</artifactId>
        <version>${jose4j.version}</version>
      </dependency>

      <!-- Cryptographic tool libraries -->
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15on</artifactId>
        <version>${bouncycastle.version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-jdk15on</artifactId>
        <version>${bouncycastle.version}</version>
      </dependency>

      <!-- OpenStack API access -->
      <dependency>
        <groupId>org.pacesys</groupId>
        <artifactId>openstack4j-core</artifactId>
        <version>${openstack4j.version}</version>
      </dependency>
      <!-- openstack4j connector -->
      <dependency>
        <groupId>org.pacesys.openstack4j.connectors</groupId>
        <artifactId>openstack4j-jersey2</artifactId>
        <version>${openstack4j.version}</version>
      </dependency>

      <!-- Test dependencies -->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>${mockito.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.icegreen</groupId>
        <artifactId>greenmail</artifactId>
        <version>${greenmail.version}</version>
        <scope>test</scope>
      </dependency>

    </dependencies>
  </dependencyManagement>



  <issueManagement>
    <system>GitHub Issue Management</system>
    <url>https://github.com/elastisys/scale.commons/issues</url>
  </issueManagement>

  <developers>
    <developer>
      <id>peterg</id>
      <name>Peter Gardfjäll</name>
      <email>peter.gardfjall@elastisys.com</email>
      <url>https://elastisys.com/</url>
      <organization>Elastisys AB</organization>
      <organizationUrl>https://elastisys.com/</organizationUrl>
      <roles>
        <role>developer</role>
      </roles>
      <timezone>+1</timezone>
    </developer>
    <developer>
      <id>simonklb</id>
      <name>Simon Kollberg</name>
      <email>simon.kollberg@elastisys.com</email>
      <url>https://elastisys.com/</url>
      <organization>Elastisys AB</organization>
      <organizationUrl>https://elastisys.com/</organizationUrl>
      <roles>
        <role>developer</role>
      </roles>
      <timezone>+1</timezone>
    </developer>
  </developers>

  <build>
    <plugins>

      <!-- Always include dependency licenses in target/third-party-licenses -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>license-maven-plugin</artifactId>
      </plugin>

    </plugins>
  </build>
</project>
