<?xml version="1.0" encoding="UTF-8"?>
<!--
 * ============LICENSE_START=======================================================
 * ONAP : CCSDK.apps.sdnr.wt
 * ================================================================================
 * Copyright (C) 2018 highstreet technologies GmbH Intellectual Property. All rights reserved.
 * ================================================================================
 * 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.ccsdk.parent</groupId>
        <artifactId>odlparent-lite</artifactId>
        <version>2.5.4</version>
        <relativePath/>
    </parent>

    <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
    <artifactId>sdnr-wt</artifactId>
    <version>1.6.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>ccsdk-sdnr-wireless transport :: micro-services</name>
    <description>SDN-R wireless transport micro-services</description>

    <modules>
        <module>common</module>
        <module>common-yang</module>
        <module>data-provider</module>
        <module>apigateway</module>
        <module>helpserver</module>
        <module>websocketmanager</module>
        <module>devicemanager-core</module>
        <module>devicemanager-onap</module>
        <module>devicemanager-o-ran-sc</module>
        <module>mountpoint-registrar</module>
        <module>odlux</module>
        <module>netconfnode-state-service</module>
        <module>mountpoint-state-provider</module>
        <module>oauth-provider</module>
        <module>featureaggregator</module>
    </modules>
</project>
