<?xml version="1.0" encoding="UTF-8"?>
<!--
  ============LICENSE_START=======================================================
  ONAP : APPC
  ================================================================================
  Copyright (C) 2017 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=========================================================
  ECOMP is a trademark and service mark of AT&T Intellectual Property.
  -->
<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">
	<parent>
		<groupId>org.onap.appc</groupId>
		<artifactId>appc-config</artifactId>
		<version>1.3.0-SNAPSHOT</version>
	</parent>

	<modelVersion>4.0.0</modelVersion>
	<packaging>pom</packaging>
	<artifactId>appc-config-params</artifactId>

	<name>Config Params Node</name>
	<description>Config Params Utilities for DG</description>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>		
	</properties>


	<dependencyManagement>

		<dependencies>
			<dependency>
				<groupId>org.onap.appc</groupId>
				<artifactId>appc-config-params-features</artifactId>
				<classifier>features</classifier>
				<type>xml</type>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>org.onap.appc</groupId>
				<artifactId>appc-config-params-provider</artifactId>
				<version>${project.version}</version>
			</dependency>
		</dependencies>


	</dependencyManagement>


	<modules>
		<module>provider</module>
		<module>features</module>
		<module>installer</module>
	</modules>
</project>
