<?xml version="1.0" encoding="UTF-8"?>
<!--
  ============LICENSE_START=======================================================
  ONAP : APPC
  ================================================================================
  Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
  ================================================================================
  Copyright (C) 2017 Amdocs
  =============================================================================
  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.
  ============LICENSE_END=========================================================
  -->
<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>org.onap.appc</groupId>
        <artifactId>appc</artifactId>
        <version>1.3.0-SNAPSHOT</version>
    </parent>

    <artifactId>appc-java-client</artifactId>
    <groupId>org.onap.appc.client</groupId>
    <version>1.3.0-SNAPSHOT</version>

    <name>appc-java-client</name>
    <description>APPC Java Client</description>
    <packaging>pom</packaging>

    <modules>
        <module>client-lib</module>
        <module>client-kit</module>
        <module>client-simulator</module>
        <module>code-generator</module>
    </modules>

    <properties>
         <licenseDir>${project.parent.basedir}</licenseDir>
        <build.helper.maven.plugin.version>1.7</build.helper.maven.plugin.version>
        <build-helper-maven-plugin-version>3.0.0</build-helper-maven-plugin-version>
        <bundle.plugin.version>2.5.0</bundle.plugin.version>
        <cambria.client.version>0.0.1</cambria.client.version>
        <eelf.core.version>1.0.0</eelf.core.version>
        <eelf.version>1.0.0</eelf.version>
        <freemarker.version>2.3.23</freemarker.version>
        <java.version>1.8</java.version>
        <junit.version>4.12</junit.version>
        <maven.compiler.plugin.version>3.6.0</maven.compiler.plugin.version>
        <maven.core.version>3.3.9</maven.core.version>
        <maven.install.plugin.version>2.5.2</maven.install.plugin.version>
        <maven.javadoc.plugin.version>2.10.4</maven.javadoc.plugin.version>
        <maven.plugin.annotations.version>3.5</maven.plugin.annotations.version>
        <maven.plugin.api.version>3.3.9</maven.plugin.api.version>
        <maven.plugin.plugin.version>3.3</maven.plugin.plugin.version>
        <maven.release.plugin.version>2.5.2</maven.release.plugin.version>
        <maven.scm.provers.jgit.version>1.9.5</maven.scm.provers.jgit.version>
        <maven.surefire.plugin.version>2.10</maven.surefire.plugin.version>
        <mockito-core.version>1.9.5</mockito-core.version>
        <odl.mdsal.yang.binding.version>0.9.1-Boron-SR1</odl.mdsal.yang.binding.version>
        <odl.sal.binding.version>1.4.1-Boron-SR1</odl.sal.binding.version>
        <odl.version>0.5.1-Boron-SR1</odl.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.scm.id>git-server</project.scm.id>
        <sal.core.api.version>1.4.2-Boron-SR2</sal.core.api.version>
        <sdnctl.dblib.version>1.1.0</sdnctl.dblib.version>
        <sdnctl.sli.version>1.1.0</sdnctl.sli.version>
        <yang.maven.plugin.version>1.0.1-Boron-SR1</yang.maven.plugin.version>
        <yang.parser.impl.version>1.0.3-Boron-SR3</yang.parser.impl.version>
    </properties>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.opendaylight.mdsal</groupId>
                    <artifactId>yang-binding</artifactId>
                    <version>${odl.mdsal.yang.binding.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <version>${bundle.plugin.version}</version>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>${build-helper-maven-plugin-version}</version>
                </plugin>
                <plugin>
                    <groupId>org.opendaylight.yangtools</groupId>
                    <artifactId>yang-maven-plugin</artifactId>
                    <version>${yang.maven.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${maven.compiler.plugin.version}</version>
                    <configuration>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                    </configuration>
                </plugin>

                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <descriptors>
                            <descriptor>assembly.xml</descriptor>
                        </descriptors>
                    </configuration>
                </plugin>

                <plugin>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>${maven.release.plugin.version}</version>
                    <configuration>
                        <goals>-s ${mvn.settings} deploy</goals>
                        <providerImplementations>
                            <git>jgit</git>
                        </providerImplementations>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.maven.scm</groupId>
                            <artifactId>maven-scm-provider-jgit</artifactId>
                            <version>${maven.scm.provers.jgit.version></version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${maven.javadoc.plugin.version}</version>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <phase>install</phase>
                            <goals>
                                <goal>aggregate-jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <phase>install</phase>
                        <goals>
                            <goal>aggregate-jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

    <dependencyManagement>
    <dependencies>
            <dependency>
                 <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>18.0</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>
            <dependency>
                <groupId>org.onap.ccsdk.sli.core</groupId>
                <artifactId>sli-provider</artifactId>
                <version>${sdnctl.sli.version}</version>
            </dependency>
            <dependency>
                <groupId>org.onap.ccsdk.sli.core</groupId>
                <artifactId>dblib-provider</artifactId>
                <version>${sdnctl.dblib.version}</version>
            </dependency>
            <dependency>
                <groupId>org.opendaylight.controller</groupId>
                <artifactId>sal-binding-api</artifactId>
                <version>${odl.sal.binding.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.att.nsa</groupId>
                <artifactId>cambriaClient</artifactId>
                <version>${cambria.client.version}</version>
                <exclusions>
                      <exclusion>
                           <artifactId>httpclient</artifactId>
                           <groupId>org.apache.httpcomponents</groupId>
                      </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.3</version>
            </dependency>
            <dependency>
                <groupId>com.att.eelf</groupId>
                <artifactId>eelf-core</artifactId>
                <version>${eelf.core.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>${mockito-core.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>
