<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright © 2017-2018 AT&T Intellectual Property.
  ~
  ~ Modifications Copyright © 2018 IBM.
  ~
  ~ 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
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
        xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.onap.ccsdk.apps.components</groupId>
        <artifactId>parent</artifactId>
        <version>0.3.0-SNAPSHOT</version>
        <relativePath>../parent</relativePath>
    </parent>
    <groupId>org.onap.ccsdk.apps.controllerblueprints</groupId>
    <artifactId>resource-dict</artifactId>
    <name>Controller Blueprints Resource Dictionary</name>

    <dependencies>
        <dependency>
            <groupId>org.onap.ccsdk.apps.controllerblueprints</groupId>
            <artifactId>core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>


</project>

