<?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.openecomp.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.openecomp.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.1</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.openecomp.appc.adapter.ansible.AnsibleActivator</Bundle-Activator>
						<Export-Package>org.openecomp.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>
