<?xml version="1.0" encoding="UTF-8"?>
<!--
  ============LICENSE_START=======================================================
  ONAP : APPC
  ================================================================================
  Copyright (C) 2017-2018 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=========================================================
  -->
<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.parent</groupId>
		<artifactId>binding-parent</artifactId>
		<version>1.4.0-SNAPSHOT</version>
                <relativePath />
	</parent>
        <groupId>org.onap.appc</groupId>
	<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>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
		</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>
						<Embed-Dependency>eelf-core,logback-core,logback-classic</Embed-Dependency>
					</instructions>
					<manifestLocation>${project.basedir}/src/main/resources/META-INF</manifestLocation>
				</configuration>
			</plugin>
		</plugins>
		<pluginManagement>
			<plugins>
			</plugins>
		</pluginManagement>
	</build>
</project>
