<?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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.onap.appc</groupId>
		<artifactId>appc-aai-client</artifactId>
		<version>1.3.0-SNAPSHOT</version>
	</parent>
	<artifactId>appc-aai-client-provider</artifactId>
	<packaging>bundle</packaging>
	<name>APPC AAI Client - Provider</name>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
	<dependencies>
		<dependency>
			<groupId>equinoxSDK381</groupId>
			<artifactId>org.eclipse.osgi</artifactId>
			<version>${equinox.osgi.version}</version>
		</dependency>
		<dependency>
			<groupId>org.onap.ccsdk.sli.core</groupId>
			<artifactId>sli-provider</artifactId>
			<scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>org.onap.ccsdk.sli.adaptors</groupId>
			<artifactId>aai-service-provider</artifactId>
			<scope>compile</scope>
		</dependency>


		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.5</version>
		</dependency>

		<dependency>
			<groupId>com.att.eelf</groupId>
			<artifactId>eelf-core</artifactId>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>



	</dependencies>
	<build>
		<plugins>
			<plugin>
				<artifactId>maven-resources-plugin</artifactId>
				<version>2.6</version>
				<executions>
					<execution>
						<id>copy-xsl</id>
						<goals>
							<goal>copy-resources</goal>
						</goals>
						<phase>validate</phase>
						<configuration>
							<outputDirectory>${basedir}/target/templates/xslt/sbg</outputDirectory>
							<resources>
								<resource>
									<directory>src/main/resources/xsl</directory>
									<includes>
										<include>*</include>
									</includes>
									<filtering>true</filtering>
								</resource>
							</resources>
						</configuration>
					</execution>
					<execution>
						<id>copy-properties</id>
						<goals>
							<goal>copy-resources</goal>
						</goals>
						<phase>validate</phase>
						<configuration>
							<outputDirectory>${basedir}/target/properties/</outputDirectory>
							<resources>
								<resource>
									<directory>src/main/resources</directory>
									<includes>
										<include>*.properties</include>
									</includes>
									<filtering>true</filtering>
								</resource>
							</resources>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<version>${bundle.plugin.version}</version>
				<extensions>true</extensions>
				<configuration>
					<instructions>
						<Bundle-SymbolicName>org.onap.appc.aai.client</Bundle-SymbolicName>
						<Bundle-Activator>org.onap.appc.aai.client.AppcAaiClientActivator</Bundle-Activator>
						<Export-Package>org.onap.appc.aai.client</Export-Package>
						<Import-Package>*</Import-Package>
						<DynamicImport-Package>*</DynamicImport-Package>
					</instructions>
					<manifestLocation>${project.basedir}/src/main/resources/META-INF</manifestLocation>
				</configuration>
			</plugin>
		</plugins>
		<pluginManagement>
			<plugins>
			</plugins>
		</pluginManagement>
	</build>
</project>
