<?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.6.3-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.6.2</babel.version>
		<aai.rest.client.version>1.2.1</aai.rest.client.version>
		<sdc-distribution-client.version>1.3.0</sdc-distribution-client.version>
		<logback.version>1.2.3</logback.version>
		<!-- docker related properties -->
		<docker.fabric.version>0.28.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.6.0</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>

	</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.4</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.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>
