<?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.0</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.3.0</vtn.version>
        <ce.version>1.0.0</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>
