<?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 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.config</groupId>
		<artifactId>blueprints-processor</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>

	<artifactId>blueprints-processor-features</artifactId>
	<packaging>jar</packaging>
	<name>Blueprints Processor - Features</name>

	<dependencies>
		<dependency>
			<groupId>org.onap.ccsdk.config</groupId>
			<artifactId>blueprints-data-adaptor-provider</artifactId>
		</dependency>
		<dependency>
			<groupId>org.onap.ccsdk.config</groupId>
			<artifactId>blueprints-rest-adaptor-provider</artifactId>
		</dependency>
		<dependency>
			<groupId>org.onap.ccsdk.config</groupId>
			<artifactId>blueprints-assignment-provider</artifactId>
		</dependency>
		<dependency>
			<groupId>org.onap.ccsdk.config</groupId>
			<artifactId>blueprints-generator-provider</artifactId>
		</dependency>
		<dependency>
			<groupId>org.onap.ccsdk.config</groupId>
			<artifactId>blueprints-model-provider</artifactId>
		</dependency>

		<dependency>
			<groupId>org.opendaylight.mdsal</groupId>
			<artifactId>features-mdsal</artifactId>
			<classifier>features</classifier>
			<type>xml</type>
			<scope>runtime</scope>
		</dependency>
	</dependencies>

	<build>
		<resources>
			<resource>
				<filtering>true</filtering>
				<directory>src/main/resources</directory>
			</resource>
		</resources>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<executions>
					<execution>
						<id>filter</id>
						<goals>
							<goal>resources</goal>
						</goals>
						<phase>generate-resources</phase>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>build-helper-maven-plugin</artifactId>
				<executions>
					<execution>
						<id>attach-artifacts</id>
						<goals>
							<goal>attach-artifact</goal>
						</goals>
						<phase>package</phase>
						<configuration>
							<artifacts>
								<artifact>
									<file>${project.build.directory}/classes/${features.file}</file>
									<type>xml</type>
									<classifier>features</classifier>
								</artifact>
							</artifacts>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
