<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2017-present Open Networking Foundation
  ~
  ~ 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/maven-v4_0_0.xsd">
         <modelVersion>4.0.0</modelVersion>

    <groupId>fake</groupId>
    <artifactId>fake</artifactId>
    <version>fake</version>

    <properties>
        <aaa.version>1.3.0</aaa.version>
        <config.version>1.3.1</config.version>
        <dhcpl2relay.version>1.1.0</dhcpl2relay.version>
        <igmp.version>1.3.0</igmp.version>
        <igmpproxy.version>1.1.0</igmpproxy.version>
        <mcast.version>1.3.0</mcast.version>
        <olt.version>1.3.0</olt.version>
        <sadis.version>1.1.0</sadis.version>
        <vtn.version>1.5.0</vtn.version>
        <ce.version>1.1.0-SNAPSHOT</ce.version>

        <!-- TODO onos-build-conf.version can be dropped when onos.version > 1.10.3 -->
        <onos-build-conf.version>1.10.3-onf</onos-build-conf.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.opencord</groupId>
            <artifactId>aaa</artifactId>
            <version>${aaa.version}</version>
            <type>oar</type>
        </dependency>

        <dependency>
            <groupId>org.opencord.ce</groupId>
            <artifactId>ce-api</artifactId>
            <version>${ce.version}</version>
            <type>oar</type>
        </dependency>

        <dependency>
            <groupId>org.opencord.ce</groupId>
            <artifactId>ecord-global-app</artifactId>
            <version>${ce.version}</version>
            <type>oar</type>
        </dependency>

        <dependency>
            <groupId>org.opencord.ce</groupId>
            <artifactId>ecord-local-app</artifactId>
            <version>${ce.version}</version>
            <type>oar</type>
        </dependency>

        <dependency>
            <groupId>org.opencord.ce</groupId>
            <artifactId>bigswitch</artifactId>
            <version>${ce.version}</version>
            <type>oar</type>
        </dependency>

        <dependency>
            <groupId>org.opencord.ce</groupId>
            <artifactId>local-channel</artifactId>
            <version>${ce.version}</version>
            <type>oar</type>
        </dependency>

        <dependency>
            <groupId>org.opencord.ce</groupId>
            <artifactId>vee</artifactId>
            <version>${ce.version}</version>
            <type>oar</type>
        </dependency>

        <dependency>
            <groupId>org.opencord.ce</groupId>
            <artifactId>fabric</artifactId>
            <version>${ce.version}</version>
            <type>oar</type>
        </dependency>

        <dependency>
            <groupId>org.opencord</groupId>
            <artifactId>cord-config</artifactId>
            <version>${config.version}</version>
            <type>oar</type>
        </dependency>

        <dependency>
            <groupId>org.opencord</groupId>
            <artifactId>dhcpl2relay</artifactId>
            <version>${dhcpl2relay.version}</version>
            <type>oar</type>
        </dependency>

        <dependency>
            <groupId>org.opencord</groupId>
            <artifactId>igmp</artifactId>
            <version>${igmp.version}</version>
            <type>oar</type>
        </dependency>

        <dependency>
            <groupId>org.opencord</groupId>
            <artifactId>onos-app-igmpproxy</artifactId>
            <version>${igmpproxy.version}</version>
            <type>oar</type>
        </dependency>

        <dependency>
            <groupId>org.opencord</groupId>
            <artifactId>mcast</artifactId>
            <version>${mcast.version}</version>
            <type>oar</type>
        </dependency>

        <dependency>
            <groupId>org.opencord</groupId>
            <artifactId>olt-app</artifactId>
            <version>${olt.version}</version>
            <type>oar</type>
        </dependency>

        <dependency>
            <groupId>org.opencord</groupId>
            <artifactId>sadis-app</artifactId>
            <version>${sadis.version}</version>
            <type>oar</type>
        </dependency>

        <dependency>
            <groupId>org.opencord</groupId>
            <artifactId>vtn</artifactId>
            <version>${vtn.version}</version>
            <type>oar</type>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.0.1</version>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>central</id>
            <name>Central Repository</name>
            <url>http://repo.maven.apache.org/maven2</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
            </releases>
        </repository>

        <repository>
            <id>snapshots</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
            </snapshots>
        </repository>
    </repositories>

</project>
