<?xml version="1.0" encoding="UTF-8"?>
<!--
    ============LICENSE_START=======================================================
    org.onap.aai
    ================================================================================
    Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
    Copyright © 2017-2018 European Software Marketing Ltd.
    ================================================================================
    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.oparent</groupId>
		<artifactId>oparent</artifactId>
		<version>2.1.0</version>
		<relativePath />
	</parent>

	<groupId>org.onap.aai.model-loader</groupId>
	<artifactId>model-loader</artifactId>
	<name>aai-model-loader</name>
	<version>1.9.4-SNAPSHOT</version>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-dependencies</artifactId>
				<version>${spring-boot.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<properties>
		<start-class>org.onap.aai.modelloader.service.ModelLoaderApplication</start-class>
		<nexusproxy>https://nexus.onap.org</nexusproxy>
		<docker.location>${basedir}/target</docker.location>
		<spring-boot.version>2.1.12.RELEASE</spring-boot.version>
		<apache.commons-text.version>1.8</apache.commons-text.version>
		<commons-compress.version>1.19</commons-compress.version>
		<hamcrest-all.version>1.3</hamcrest-all.version>
		<babel.version>1.9.5</babel.version>
		<aai.rest.client.version>1.2.1</aai.rest.client.version>
		<sdc-distribution-client.version>1.4.1</sdc-distribution-client.version>
		<logback.version>1.2.3</logback.version>
		<!-- docker related properties -->
		<docker.fabric.version>0.39.0</docker.fabric.version>
		<aai.docker.version>1.0.0</aai.docker.version>
		<aai.build.directory>${project.build.directory}/${project.artifactId}-${project.version}-build/</aai.build.directory>
		<aai.docker.namespace>onap</aai.docker.namespace>
		<aai.base.image>alpine</aai.base.image>
		<aai.base.image.version>1.8.1</aai.base.image.version>
		<!-- This will be used for the docker images as the default format of maven build has issues -->
		<maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>

		<sonar.jacoco.reportPath />
		<sonar.jacoco.itReportPath />
		<sonar.jacoco.reportMissing.force.zero />

		<jacoco.line.coverage.limit>0.75</jacoco.line.coverage.limit>
		<jacoco.version>0.8.5</jacoco.version>
		<sonar-jacoco-listeners.version>3.2</sonar-jacoco-listeners.version>
		<sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
		<sonar.coverage.jacoco.xmlReportPaths>${project.reporting.outputDirectory}/jacoco-ut/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
		<sonar.exclusions>**/gen/**,**/generated-sources/**,**/yang-gen**,**/pax/**</sonar.exclusions>

		<sonar.scanner.version>3.7.0.1746</sonar.scanner.version>

		<maven-javadoc-plugin.version>3.2.0</maven-javadoc-plugin.version>
		<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
		<maven-compiler-plugin.source>11</maven-compiler-plugin.source>
		<maven-compiler-plugin.target>11</maven-compiler-plugin.target>
		<maven-compiler-plugin.test.source>11</maven-compiler-plugin.test.source>
		<maven-compiler-plugin.test.target>11</maven-compiler-plugin.test.target>
	</properties>

	<distributionManagement>
		<repository>
			<id>ecomp-releases</id>
			<name>ECOMP Release Repository</name>
			<url>${nexusproxy}/content/repositories/releases/</url>
		</repository>
		<snapshotRepository>
			<id>ecomp-snapshots</id>
			<name>ECOMP Snapshot Repository</name>
			<url>${nexusproxy}/content/repositories/snapshots/</url>
		</snapshotRepository>
	</distributionManagement>

	<profiles>
		<!-- Docker profile to be used for building docker image and pushing to nexus -->
		<profile>
			<id>docker</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.codehaus.mojo</groupId>
						<artifactId>build-helper-maven-plugin</artifactId>
						<version>3.0.0</version>
						<executions>
							<execution>
								<phase>pre-clean</phase>
								<id>parse-version</id>
								<goals>
									<goal>parse-version</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<groupId>org.codehaus.groovy.maven</groupId>
						<artifactId>gmaven-plugin</artifactId>
						<version>1.0</version>
						<executions>
							<execution>
								<phase>pre-clean</phase>
								<goals>
									<goal>execute</goal>
								</goals>
								<configuration>
									<source>
										def userAaiBaseImage = session.userProperties['aai.base.image'];
										def userAaiCommonVersion = session.userProperties['aai.base.image.version'];
										if (userAaiCommonVersion != null) {
											project.properties['aai.base.image.version'] = userAaiCommonVersion;
										}
										if (userAaiBaseImage != null) {
											project.properties['aai.base.image'] = userAaiBaseImage;
										}
										log.info 'Base image flavour: ' + project.properties['aai.base.image'];
										log.info 'Base image version: ' + project.properties['aai.base.image.version'];
									</source>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<groupId>io.fabric8</groupId>
						<artifactId>docker-maven-plugin</artifactId>
						<version>${docker.fabric.version}</version>
						<configuration>
							<verbose>true</verbose>
							<apiVersion>1.23</apiVersion>
							<images>
								<image>
									<name>${docker.push.registry}/${aai.docker.namespace}/${project.artifactId}:%l</name>
									<build>
										<filter>@</filter>
										<tags>
											<tag>latest</tag>
											<tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}-STAGING-latest</tag>
											<tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}-STAGING-${maven.build.timestamp}</tag>
										</tags>
										<cleanup>try</cleanup>
										<dockerFileDir>${project.basedir}/src/main/docker</dockerFileDir>
										<assembly>
											<inline>
												<fileSets>
													<fileSet>
														<directory>${aai.build.directory}</directory>
														<outputDirectory>/${project.artifactId}</outputDirectory>
													</fileSet>
												</fileSets>
											</inline>
										</assembly>
									</build>
								</image>
							</images>
						</configuration>
						<executions>
							<execution>
								<id>clean-images</id>
								<phase>pre-clean</phase>
								<goals>
									<goal>remove</goal>
								</goals>
								<configuration>
									<removeAll>true</removeAll>
								</configuration>
							</execution>
							<execution>
								<id>generate-images</id>
								<phase>package</phase>
								<goals>
									<goal>build</goal>
								</goals>
							</execution>
							<execution>
								<id>push-images</id>
								<phase>deploy</phase>
								<goals>
									<goal>push</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jetty</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-tomcat</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.onap.aai</groupId>
			<artifactId>babel</artifactId>
			<version>${babel.version}</version>
			<classifier>client</classifier>
			<exclusions>
				<exclusion>
					<groupId>*</groupId>
					<artifactId>*</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.glassfish.jersey.core</groupId>
			<artifactId>jersey-common</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.onap.aai</groupId>
			<artifactId>rest-client</artifactId>
			<version>${aai.rest.client.version}</version>
		</dependency>
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
		</dependency>

		<!-- Test dependencies -->
		<!-- https://mvnrepository.com/artifact/com.mikesamuel/json-sanitizer -->
		<dependency>
			<groupId>com.mikesamuel</groupId>
			<artifactId>json-sanitizer</artifactId>
			<version>1.2.0</version>
		</dependency>

		<!-- Common logging framework -->
		<dependency>
			<groupId>org.onap.aai.logging-service</groupId>
			<artifactId>common-logging</artifactId>
			<version>1.5.0</version>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<version>${logback.version}</version><!--$NO-MVN-MAN-VER$ -->
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-core</artifactId>
			<version>${logback.version}</version><!--$NO-MVN-MAN-VER$ -->
		</dependency>
		<dependency>
			<groupId>org.onap.sdc.sdc-distribution-client</groupId>
			<artifactId>sdc-distribution-client</artifactId>
			<version>${sdc-distribution-client.version}</version>
		</dependency>
		<dependency>
			<groupId>org.json</groupId>
			<artifactId>json</artifactId>
			<version>20131018</version><!--$NO-MVN-MAN-VER$ -->
		</dependency>
		<dependency>
			<groupId>org.eclipse.jetty</groupId>
			<artifactId>jetty-security</artifactId>
		</dependency>
		<dependency>
			<groupId>jline</groupId>
			<artifactId>jline</artifactId>
			<version>2.12.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-compress</artifactId>
			<version>${commons-compress.version}</version>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.11.0</version>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-text</artifactId>
			<version>${apache.commons-text.version}</version>
		</dependency>

		<!-- Test dependencies -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.hamcrest</groupId>
			<artifactId>hamcrest-all</artifactId>
			<version>${hamcrest-all.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-core</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<!-- Plugins and repositories -->
	<pluginRepositories>
		<pluginRepository>
			<id>central</id>
			<url>http://repo1.maven.org/maven2</url>
		</pluginRepository>
		<pluginRepository>
			<id>EvoSuite</id>
			<name>EvoSuite Repository</name>
			<url>http://www.evosuite.org/m2</url>
		</pluginRepository>
	</pluginRepositories>

	<repositories>
		<repository>
			<id>central</id>
			<name>Maven 2 repository 2</name>
			<url>http://repo2.maven.org/maven2/</url>
		</repository>
		<repository>
			<id>ecomp-releases</id>
			<name>ECOMP Release Repository</name>
			<url>${nexusproxy}/content/repositories/releases/</url>
		</repository>
		<repository>
			<id>ecomp-snapshots</id>
			<name>ECOMP Snapshot Repository</name>
			<url>${nexusproxy}/content/repositories/snapshots/</url>
		</repository>
		<repository>
			<id>ecomp-staging</id>
			<name>ECOMP Staging Repository</name>
			<url>${nexusproxy}/content/repositories/staging/</url>
		</repository>
	</repositories>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>${maven-compiler-plugin.version}</version>
				<inherited>true</inherited>
				<configuration>
					<source>${maven-compiler-plugin.source}</source>
					<target>${maven-compiler-plugin.target}</target>
					<testSource>${maven-compiler-plugin.test.source}</testSource>
					<testTarget>${maven-compiler-plugin.test.target}</testTarget>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>${spring-boot.version}</version>
				<configuration>
					<executable>true</executable>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>com.mycila</groupId>
				<artifactId>license-maven-plugin</artifactId>
				<version>3.0</version>
				<configuration>
					<header>License.txt</header>
					<includes>
						<include>src/main/java/**</include>
						<include>src/test/java/**</include>
						<include>version/properties</include>
						<include>pom.xml</include>
					</includes>
					<skipExistingHeaders>true</skipExistingHeaders>
				</configuration>
				<executions>
					<execution>
						<goals>
							<!-- Set goal to "format" to auto update license headers -->
							<goal>check</goal>
						</goals>
						<phase>process-sources</phase>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-deploy-plugin</artifactId>
				<configuration>
					<classifier>client</classifier>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<configuration>
					<descriptors>
						<descriptor>src/main/assembly/descriptor.xml</descriptor>
					</descriptors>
				</configuration>
				<executions>
					<execution>
						<id>make-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<!-- once we connect aai-parent or oparent 3.0+ we can take out this
			     whole section -->

			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
				<version>${jacoco.version}</version>
				<configuration>
					<!-- Note: This exclusion list should match <sonar.exclusions> property
                     above -->
					<excludes>
						<exclude>**/gen/**</exclude>
						<exclude>**/generated-sources/**</exclude>
						<exclude>**/yang-gen/**</exclude>
						<exclude>**/pax/**</exclude>
					</excludes>
				</configuration>
				<executions>
					<!-- Prepares the property pointing to the JaCoCo runtime agent which
                     is passed as VM argument when Maven the Surefire plugin is executed. -->
					<execution>
						<id>pre-unit-test</id>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
						<configuration>
							<!-- Sets the path to the file which contains the execution data
                                 . -->
							<destFile>${project.build.directory}/code-coverage/jacoco-ut.exec</destFile>
							<!-- Sets the name of the property containing the settings for JaCoCo
                                 runtime agent. -->
							<propertyName>surefireArgLine</propertyName>
						</configuration>
					</execution>
					<!-- Ensures that the code coverage report for unit tests is created
                     after unit tests have been run. -->
					<execution>
						<id>post-unit-test</id>
						<phase>test</phase>
						<goals>
							<goal>report</goal>
						</goals>
						<configuration>
							<!-- Sets the path to the file which contains the execution data
                                 . -->
							<dataFile>${project.build.directory}/code-coverage/jacoco-ut.exec</dataFile>
							<!-- Sets the output directory for the code coverage report. -->
							<outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
						</configuration>
					</execution>
					<execution>
						<id>pre-integration-test</id>
						<phase>pre-integration-test</phase>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
						<configuration>
							<!-- Sets the path to the file which contains the execution data
                                 . -->
							<destFile>${project.build.directory}/code-coverage/jacoco-it.exec</destFile>
							<!-- Sets the name of the property containing the settings for JaCoCo
                                 runtime agent. -->
							<propertyName>failsafeArgLine</propertyName>
						</configuration>
					</execution>
					<!-- Ensures that the code coverage report for integration tests after
                     integration tests have been run. -->
					<execution>
						<id>post-integration-test</id>
						<phase>post-integration-test</phase>
						<goals>
							<goal>report</goal>
						</goals>
						<configuration>
							<!-- Sets the path to the file which contains the execution data
                                 . -->
							<dataFile>${project.build.directory}/code-coverage/jacoco-it.exec</dataFile>
							<!-- Sets the output directory for the code coverage report. -->
							<outputDirectory>${project.reporting.outputDirectory}/jacoco-it</outputDirectory>
						</configuration>
					</execution>
					<execution>
						<id>default-check</id>
						<goals>
							<goal>check</goal>
						</goals>
						<configuration>
							<dataFile>${project.build.directory}/code-coverage/jacoco-ut.exec</dataFile>
							<rules>
								<rule implementation="org.jacoco.maven.RuleConfiguration">
									<element>BUNDLE</element>
									<limits>
										<limit implementation="org.jacoco.report.check.Limit">
											<counter>LINE</counter>
											<value>COVEREDRATIO</value>
											<minimum>${jacoco.line.coverage.limit}</minimum>
										</limit>
									</limits>
								</rule>
							</rules>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>3.0.0-M4</version>
				<configuration>
					<!-- Sets the VM argument line used when unit tests are run. -->
					<argLine>${surefireArgLine}</argLine>
					<!-- Excludes integration tests when unit tests are run. -->
					<excludes>
						<exclude>**/IT*.java</exclude>
					</excludes>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-failsafe-plugin</artifactId>
				<version>3.0.0-M4</version>
				<executions>
					<!-- Ensures that both integration-test and verify goals of the Failsafe
                     Maven plugin are executed. -->
					<execution>
						<id>integration-tests</id>
						<goals>
							<goal>integration-test</goal>
							<goal>verify</goal>
						</goals>
						<configuration>
							<!-- Sets the VM argument line used when integration tests are run. -->
							<argLine>${failsafeArgLine}</argLine>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.sonarsource.scanner.maven</groupId>
				<artifactId>sonar-maven-plugin</artifactId>
				<version>${sonar.scanner.version}</version>
			</plugin>
			<!-- end removable sonar config -->



		</plugins>
	</build>
</project>
