<?xml version="1.0" encoding="UTF-8"?>
<!--<![CDATA[
========================LICENSE_START=================================
O-RAN-SC
%%
Copyright (C) 2019 Nordix Foundation
%%
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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.o-ran-sc.nonrt.ric-dashboard</groupId>
		<artifactId>ric-dash-parent</artifactId>
		<version>1.0.0-SNAPSHOT</version>
	</parent>
	<!-- This groupId will NOT allow deployment in LF -->
	<groupId>org.o-ran-sc.ric.plt.a1controller.client</groupId>
	<artifactId>a1-controller-client</artifactId>
	<name>RIC A1 Controller client</name>
	<version>0.1.0-SNAPSHOT</version>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<!-- Jenkins invokes maven with -Dbuild.number=.. -->
		<build.number>0</build.number>
		<!-- same as groupId BUT without hyphens -->
		<client.base.package.name>org.oransc.ric.a1controller.client</client.base.package.name>
	</properties>
	<!-- Successful compilation requires generated code dependencies -->
	<dependencies>
		<!-- Required for Java 9 and later -->
		<dependency>
			<groupId>javax.annotation</groupId>
			<artifactId>javax.annotation-api</artifactId>
		</dependency>
		<dependency>
			<groupId>io.swagger.core.v3</groupId>
			<artifactId>swagger-annotations</artifactId>
			<version>2.0.8</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
		</dependency>
		<!-- HTTP client: Spring RestTemplate -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
		</dependency>
		<!-- JSON processing: jackson -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.jaxrs</groupId>
			<artifactId>jackson-jaxrs-json-provider</artifactId>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.datatype</groupId>
			<artifactId>jackson-datatype-jsr310</artifactId>
		</dependency>
		<!-- test dependencies -->
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-api</artifactId>
			<scope>test</scope>
		</dependency>
                <dependency>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                </dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<!-- This 2019 version is required for OpenAPI 3 -->
				<groupId>io.swagger.codegen.v3</groupId>
				<artifactId>swagger-codegen-maven-plugin</artifactId>
				<version>3.0.8</version>
				<executions>
					<execution>
						<goals>
							<goal>generate</goal>
						</goals>
						<configuration>
							<inputSpec>${project.basedir}/src/main/resources/a1_controller_0.1.0.yaml</inputSpec>
							<language>java</language>
							<packageName>${client.base.package.name}</packageName>
							<modelPackage>${client.base.package.name}.model</modelPackage>
							<apiPackage>${client.base.package.name}.api</apiPackage>
							<invokerPackage>${client.base.package.name}.invoker</invokerPackage>
							<configOptions>
								<groupId>${project.groupId}</groupId>
								<artifactId>${project.artifactId}</artifactId>
								<artifactVersion>${project.version}</artifactVersion>
								<library>resttemplate</library>
								<java8>true</java8>
								<dateLibrary>java8</dateLibrary>
								<licenseName>Apache 2.0</licenseName>
								<licenseUrl>https://www.apache.org/licenses/LICENSE-2.0</licenseUrl>
							</configOptions>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<!-- add build information to manifest. Java provides access to the implementation 
				version for a package, so cram the build number into there. -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<configuration>
					<archive>
						<manifest>
							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
						</manifest>
						<manifestEntries>
							<Implementation-Version>${project.version}-b${build.number}</Implementation-Version>
						</manifestEntries>
					</archive>
				</configuration>
			</plugin>
		</plugins>
		<pluginManagement>
			<plugins>
				<!--This plugin's configuration is used to store Eclipse m2e settings 
					only. It has no influence on the Maven build itself. -->
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>io.swagger.codegen.v3</groupId>
										<artifactId>swagger-codegen-maven-plugin</artifactId>
										<versionRange>[1.0,)</versionRange>
										<goals>
											<goal>generate</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore />
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</project>
