<!--
  ~ Copyright © 2016-2018 European Support Limited
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<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>

  <artifactId>sdc-onboarding</artifactId>
  <packaging>pom</packaging>

  <parent>
    <groupId>org.openecomp.sdc</groupId>
    <artifactId>sdc-main</artifactId>
    <version>1.7.0-SNAPSHOT</version>
  </parent>

  <modules>
    <module>../common</module>
    <module>../openecomp-be</module>
    <module>../openecomp-ui</module>
  </modules>

  <properties>

    <maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.targer>1.8</maven.compiler.targer>
    <jacoco.skip>true</jacoco.skip>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <!-- Maven plugin versions -->
    <mvn.assembly.version>2.1</mvn.assembly.version>
    <mvn.compiler.version>3.7.0</mvn.compiler.version>
    <mvn.clean.version>2.5</mvn.clean.version>
    <mvn.resource.version>3.1.0</mvn.resource.version>
    <mvn.deploy.version>2.4</mvn.deploy.version>
    <mvn.hub.version>1.4.0</mvn.hub.version>
    <mvn.install.version>2.4</mvn.install.version>
    <mvn.jar.version>2.4</mvn.jar.version>
    <mvn.jaxb2.version>0.13.3</mvn.jaxb2.version>
    <mvn.license.version>1.10</mvn.license.version>
    <mvn.shade.version>2.3</mvn.shade.version>
    <maven.dependency.version>2.8</maven.dependency.version>
    <mvn.swagger.version>3.1.0</mvn.swagger.version>
    <mvn.war.version>2.1.1</mvn.war.version>
    <maven-core.version>3.5.3</maven-core.version>
    <maven-plugin-plugin.version>3.5.1</maven-plugin-plugin.version>
    <maven-plugin-annotations.version>3.5.1</maven-plugin-annotations.version>
    <mvn.antrun.version>1.8</mvn.antrun.version>

    <!-- Onboarding 3rd party versions -->
    <aspectj.version>1.8.9</aspectj.version>
    <aspectjrt.version>${aspectj.version}</aspectjrt.version>
    <bsh.version>2.0b6</bsh.version>
    <cglib.nodep.version>3.2.4</cglib.nodep.version>
    <classmate.version>1.3.3</classmate.version>
    <commons.codec.version>1.10</commons.codec.version>
    <commons.digester.version>2.1</commons.digester.version>
    <commons.io.version>2.5</commons.io.version>
    <commons.lang.version>2.6</commons.lang.version>
    <commons.lang3.version>3.4</commons.lang3.version>
    <cxf.version>3.1.16</cxf.version>
    <datastax.cassandra.version>3.8.0</datastax.cassandra.version>
    <easymock.version>3.4</easymock.version>
    <groovy.version>2.4.8</groovy.version>
    <groovy.minimal.version>1.5.8</groovy.minimal.version>
    <fop.version>2.2</fop.version>
    <freemarker.version>2.3.26-incubating</freemarker.version>
    <hibernate.validator.version>5.3.6.Final</hibernate.validator.version>
    <http.client.version>4.5.3</http.client.version>
    <http.core.version>4.4.1</http.core.version>
    <httpasyncclient.version>4.1.2</httpasyncclient.version>
    <janino.version>2.7.7</janino.version>
    <jaxb.impl.version>2.2.11</jaxb.impl.version>
    <javax.el.version>2.2.4</javax.el.version>
    <javax.el-api.version>3.0.1-b04</javax.el-api.version>
    <javax.inject.version>1</javax.inject.version>
    <javax.servlet.version>2.5</javax.servlet.version>
    <jackson.annotations.version>${jackson.version}</jackson.annotations.version>
    <jackson.dataformat.version>${jackson.version}</jackson.dataformat.version>
    <jcommander.version>1.58</jcommander.version>
    <jetty.servlets.version>9.4.11.v20180605</jetty.servlets.version>
    <jersey.core.version>1.19.1</jersey.core.version>
    <jersey.multipart.version>1.18.1</jersey.multipart.version>
    <logback.version>1.2.3</logback.version>
    <mockito.all.version>1.10.19</mockito.all.version>
    <org.codehaus.jackson.version>1.9.13</org.codehaus.jackson.version>
    <org.everit.json.schema.version>1.5.1</org.everit.json.schema.version>
    <org.reflections.version>0.9.10</org.reflections.version>
    <servlet.version>2.5</servlet.version>
    <slf4j.version>1.7.21</slf4j.version>
    <snakeyaml.version>1.17</snakeyaml.version>
    <spring.framework.version>4.3.18.RELEASE</spring.framework.version>
    <swagger.version>2.0.8</swagger.version>
    <woodstox.version>4.4.1</woodstox.version>
    <zusammen.version>1.0.1</zusammen.version>
    <zusammen-state-store.version>1.0.2</zusammen-state-store.version>
    <zusammen-collaboration-store.version>1.0.2</zusammen-collaboration-store.version>
    <zusammen-index-store.version>1.0.0</zusammen-index-store.version>
    <build.tools.version>${project.version}</build.tools.version>
    <bouncycastle.version>1.61</bouncycastle.version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.framework.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.framework.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-text</artifactId>
        <version>1.3</version>
      </dependency>
      <dependency>
        <groupId>com.beust</groupId>
        <artifactId>jcommander</artifactId>
        <version>${jcommander.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpasyncclient</artifactId>
        <version>${httpasyncclient.version}</version>
      </dependency>
      <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>${jaxb.impl.version}</version>
      </dependency>
      <dependency>
        <groupId>org.beanshell</groupId>
        <artifactId>bsh</artifactId>
        <version>${bsh.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-digester</groupId>
        <artifactId>commons-digester</artifactId>
        <version>${commons.digester.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml</groupId>
        <artifactId>classmate</artifactId>
        <version>${classmate.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-all-minimal</artifactId>
        <version>${groovy.minimal.version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.janino</groupId>
        <artifactId>janino</artifactId>
        <version>${janino.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${jackson.annotations.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>${aspectjrt.version}</version>
      </dependency>
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${servlet-api.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>${commons-beanutils}</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>annotations</artifactId>
        <version>3.0.1u2</version>
      </dependency>
      <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib-nodep</artifactId>
        <version>${cglib.nodep.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>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
        <exclusions>
          <exclusion>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-yaml</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>${commons.codec.version}</version>
      </dependency>
      <dependency>
        <groupId>com.datastax.cassandra</groupId>
        <artifactId>cassandra-driver-core</artifactId>
        <version>${datastax.cassandra.version}</version>
      </dependency>
      <dependency>
        <groupId>com.datastax.cassandra</groupId>
        <artifactId>cassandra-driver-mapping</artifactId>
        <version>${datastax.cassandra.version}</version>
      </dependency>
      <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>${ws.rs.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>${gson.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${commons.io.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${commons.lang3.version}</version>
      </dependency>
      <dependency>
        <groupId>io.swagger.core.v3</groupId>
        <artifactId>swagger-annotations</artifactId>
        <version>${swagger.version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.tomakehurst</groupId>
        <artifactId>wiremock</artifactId>
        <version>${wire-mock.version}</version>
      </dependency>
      <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>${testng.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>${mockito.all.version}</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>${mvn.jar.version}</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-clean-plugin</artifactId>
        <version>${mvn.clean.version}</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${maven-surefire-plugin.version}</version>
        <configuration>
          <forkCount>${fork.count}</forkCount>
          <forkMode>${fork.mode}</forkMode>
          <printSummary>false</printSummary>
          <additionalClasspathElements>
            <additionalClasspathElement>${project.basedir}/src/test/resources
            </additionalClasspathElement>
          </additionalClasspathElements>
          <systemPropertyVariables>
            <logback.configurationFile>src/test/resources/logback-test.xml
            </logback.configurationFile>
            <config.location>${project.basedir}/configuration</config.location>
          </systemPropertyVariables>
          <useSystemClassLoader>${useSystemClassLoader}</useSystemClassLoader>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>${mvn.install.version}</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>${mvn.resource.version}</version>
      </plugin>
    </plugins>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
        <excludes>
          <exclude>**/*</exclude>
        </excludes>
      </testResource>
    </testResources>
  </build>

</project>
