<?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-artifact-handler-model</artifactId>
	<name>APPC Artifact Handler - Model</name>
	<packaging>bundle</packaging>

	<build>

		<plugins>
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<extensions>true</extensions>
				<configuration>
					<instructions>
						<Import-Package>!com.google.common.collect,*</Import-Package>
						<Embed-Dependency>guava</Embed-Dependency>
					</instructions>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.opendaylight.yangtools</groupId>
				<artifactId>yang-maven-plugin</artifactId>
                                <version>${odl.yangtools.version}</version>
				<dependencies>
					<dependency>
						<groupId>org.opendaylight.mdsal</groupId>
						<artifactId>maven-sal-api-gen-plugin</artifactId>
						<!-- <version>${odl.yangtools.version}</version> -->
						<version>${odl.sal.api.gen.plugin.version}</version>
						<type>jar</type>
					</dependency>
				</dependencies>
				<executions>
					<execution>
						<goals>
							<goal>generate-sources</goal>
						</goals>
						<configuration>
							<yangFilesRootDir>${yang.file.directory}</yangFilesRootDir>
							<codeGenerators>
								<generator>
									<codeGeneratorClass>org.opendaylight.mdsal.binding.maven.api.gen.plugin.CodeGeneratorImpl</codeGeneratorClass>
									<outputBaseDir>${salGeneratorPath}</outputBaseDir>
								</generator>
							</codeGenerators>
							<inspectDependencies>true</inspectDependencies>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <version>2.5.2</version>
                <executions>
                    <execution>
                        <id>yang</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>install-file</goal>
                        </goals>
                        <configuration>
                            <file>${project.basedir}/src/main/yang/artifact-handler.yang</file>
                            <groupId>${project.groupId}</groupId>
                            <artifactId>${project.artifactId}</artifactId>
                            <version>${project.version}</version>
                            <packaging>yang</packaging>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
		</plugins>
	</build>
	<dependencies>
		<dependency>
			<groupId>org.opendaylight.mdsal</groupId>
			<artifactId>yang-binding</artifactId>
		</dependency>
		<dependency>
			<groupId>org.opendaylight.yangtools</groupId>
			<artifactId>yang-common</artifactId>
		</dependency>
		<dependency>
			<groupId>org.opendaylight.mdsal.model</groupId>
			<artifactId>ietf-inet-types</artifactId>
		</dependency>
		<dependency>
			<groupId>org.opendaylight.mdsal.model</groupId>
			<artifactId>ietf-yang-types</artifactId>
		</dependency>
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
		</dependency>
	</dependencies>
	<version>1.4.0-SNAPSHOT</version>
</project>
