<?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.
  
  ECOMP is a trademark and service mark of AT&T Intellectual Property.
  ============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</groupId>
		<artifactId>appc-ansible-adapter</artifactId>
		<version>1.3.0-SNAPSHOT</version>
	</parent>

	<artifactId>appc-ansible-adapter-bundle</artifactId>
	<packaging>bundle</packaging>
	<name>APPC Ansible Service Adapter - bundle</name>

	<dependencies>
		<dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<version>1.9</version>
		</dependency>
		<dependency>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
			<version>1.2</version>
		</dependency>

		<dependency>
	                <groupId>org.apache.httpcomponents</groupId>
        		<artifactId>httpclient</artifactId>
		        <version>4.5.2</version>
	       </dependency>

		<!-- http://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
		<dependency>
			<groupId>org.onap.appc</groupId>
			<artifactId>appc-common</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>javax</groupId>
			<artifactId>javaee-api</artifactId>
			<version>7.0</version>
		</dependency>

		<!-- 
		### DEPENDENCIES NOT REQUIRED 

                 <dependency>
			<groupId>jce</groupId>
			<artifactId>jce</artifactId>
			<version>1_2-do</version>
			<scope>compile</scope>
		</dependency>  


		<dependency>
			<groupId>javax.ws.rs</groupId>
			<artifactId>javax.ws.rs-api</artifactId>
			<version>2.0</version>
		</dependency>

			<groupId>javax.xml.bind</groupId>
			<artifactId>jaxb-api</artifactId>
			<version>2.2.3</version>
		</dependency> 

		<dependency>
			<groupId>javax.xml</groupId>
			<artifactId>jaxp-api</artifactId>
			<version>1.4.2</version>
		</dependency> 

		#########
		--> 

		<!-- Needed to run test cases -->
		<dependency>
			<groupId>org.glassfish.jersey.core</groupId>
			<artifactId>jersey-common</artifactId>
			<version>2.9.1</version>
		</dependency>

		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-jaxrs</artifactId>
			<version>1.9.12</version>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>


		<dependency>
			<groupId>org.onap.ccsdk.sli.core</groupId>
			<artifactId>sli-common</artifactId>
			<scope>compile</scope>
			<!-- Added exclusion to prevent missing dependency issue on dblib -->
			<exclusions>
				<exclusion>
					<groupId>org.onap.ccsdk.sli.core</groupId>
					<artifactId>dblib-provider</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>org.onap.ccsdk.sli.core</groupId>
			<artifactId>sli-provider</artifactId>
			<scope>compile</scope>
			<!-- Added exclusion to prevent missing dependency issue on dblib -->
			<exclusions>
				<exclusion>
					<groupId>org.onap.ccsdk.sli.core</groupId>
					<artifactId>dblib-provider</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>equinoxSDK381</groupId>
			<artifactId>org.eclipse.osgi</artifactId>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
		</dependency>

		<dependency>
			<groupId>org.mariadb.jdbc</groupId>
			<artifactId>mariadb-java-client</artifactId>
		</dependency>

		 <dependency>
		        <groupId>org.json</groupId>
		        <artifactId>json</artifactId>
		        <version>20160212</version>
		</dependency>


                <dependency>
    			<groupId>com.google.guava</groupId>
		        <artifactId>guava</artifactId>
		        <version>20.0</version>
		</dependency>

                <!-- 
                <dependency>
    			<groupId>com.google.code.gson</groupId>
		        <artifactId>gson</artifactId>
		        <version>2.8.0</version>
		</dependency>
                -->

	</dependencies>


	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<extensions>true</extensions>
				<configuration>
					<instructions>
						<Bundle-SymbolicName>appc-ansible-adapter</Bundle-SymbolicName>
						<Bundle-Activator>org.onap.appc.adapter.ansible.AnsibleActivator</Bundle-Activator>
						<Export-Package>org.onap.appc.adapter.ansible</Export-Package>
						<Import-Package>org.onap.ccsdk.sli.core.sli.*,org.osgi.framework.*,org.slf4j.*, javax.net.*,javax.net.ssl.*,org.xml.sax.*,javax.xml.bind.*,javax.naming.*, javax.security.*</Import-Package>
						<Embed-Dependency>*;scope=compile|runtime;artifactId=!sli-common|org.eclipse.osgi|slf4j-api|jcl-over-slf4j|mariadb-java-client|xml-apis</Embed-Dependency>
						<Embed-Transitive>true</Embed-Transitive>
					</instructions>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
