<?xml version="1.0" encoding="UTF-8"?>
<!--

    ============LICENSE_START=======================================================
    org.onap.aai
    ================================================================================
    Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved.
    Copyright (c) 2017-2019 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</groupId>
	<artifactId>babel</artifactId>
	<version>1.7.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>aai-babel</name>
	<description>ONAP AAI Babel Microservice</description>

	<properties>
		<!-- Spring boot version -->
		<spring.boot.version>2.1.12.RELEASE</spring.boot.version>

		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<aai.schema.source.folder>onap/aai_schema</aai.schema.source.folder>
		<aai.schema.target.folder>${project.build.directory}/aai-schema</aai.schema.target.folder>

		<sonar.jacoco.reportPath />
		<sonar.jacoco.itReportPath />
		<sonar.jacoco.reportMissing.force.zero />
		
		<jacoco.line.coverage.limit>0.90</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>

        <!-- 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>

		<!-- Dependency Versions -->
		<common.logging.version>1.2.2</common.logging.version>
		<sdc.tosca.version>1.5.1</sdc.tosca.version>
		<commons.compress.version>1.18</commons.compress.version>
		<javax.ws.rs.version>2.1</javax.ws.rs.version>
		<mvn.jaxb2.version>0.13.2</mvn.jaxb2.version>
		<aai-schema.group.id>org.onap.aai.schema-service</aai-schema.group.id>
		<aai-schema.version>1.7.6</aai-schema.version>
		<aai.rest.client.version>1.2.1</aai.rest.client.version>
		<sdc.distribution.client.version>1.3.0</sdc.distribution.client.version>
		<xmlunit.version>1.6</xmlunit.version>
		<logback.version>1.2.3</logback.version>
		<antrun.version>1.8</antrun.version>
		<jaxb.version>2.2.11</jaxb.version>
		<javax.activation.version>1.1.1</javax.activation.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>
	</properties>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<!-- Import dependency management from Spring Boot -->
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-dependencies</artifactId>
				<version>${spring.boot.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<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-jersey</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-tomcat</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.onap.aai.logging-service</groupId>
			<artifactId>common-logging</artifactId>
			<version>${common.logging.version}</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>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-compress</artifactId>
			<version>${commons.compress.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
		</dependency>
		<dependency>
			<groupId>javax.ws.rs</groupId>
			<artifactId>javax.ws.rs-api</artifactId>
			<version>${javax.ws.rs.version}</version>
		</dependency>
		<dependency>
			<groupId>org.codehaus.groovy</groupId>
			<artifactId>groovy</artifactId>
		</dependency>
		<dependency>
			<groupId>org.onap.sdc.sdc-tosca</groupId>
			<artifactId>sdc-tosca</artifactId>
			<version>${sdc.tosca.version}</version>
		</dependency>
		<dependency>
			<groupId>org.onap.aai</groupId>
			<artifactId>rest-client</artifactId>
			<version>${aai.rest.client.version}</version>
		</dependency>
		
		<!-- Testing -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.onap.sdc.sdc-distribution-client</groupId>
			<artifactId>sdc-distribution-client</artifactId>
			<version>${sdc.distribution.client.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>xmlunit</groupId>
			<artifactId>xmlunit</artifactId>
			<version>${xmlunit.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>javax.xml.bind</groupId>
			<artifactId>jaxb-api</artifactId>
			<version>${jaxb.version}</version>
		</dependency>
		<dependency>
			<groupId>com.sun.xml.bind</groupId>
			<artifactId>jaxb-core</artifactId>
			<version>${jaxb.version}</version>
		</dependency>
		<dependency>
			<groupId>com.sun.xml.bind</groupId>
			<artifactId>jaxb-impl</artifactId>
			<version>${jaxb.version}</version>
		</dependency>
		<dependency>
			<groupId>javax.activation</groupId>
			<artifactId>activation</artifactId>
			<version>${javax.activation.version}</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>${spring.boot.version}</version>
				<configuration>
					<jvmArguments>
						-DCONFIG_HOME=./appconfig-local
						-DAPP_HOME=.
						-Dtosca.mappings.config=./appconfig-local/tosca-mappings.json
						-DKEY_STORE_PASSWORD=${KEY_STORE_PASSWORD}
					</jvmArguments>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<executions>
					<execution>
						<id>unpack</id>
						<phase>initialize</phase>
						<goals>
							<goal>unpack</goal>
						</goals>
						<configuration>
							<artifactItems>
								<artifactItem>
									<groupId>${aai-schema.group.id}</groupId>
									<artifactId>aai-schema</artifactId>
									<version>${aai-schema.version}</version>
									<type>jar</type>
									<includes>${aai.schema.source.folder}/aai_schema_v**.xsd</includes>
									<outputDirectory>${project.build.directory}/tmp</outputDirectory>
								</artifactItem>
							</artifactItems>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-antrun-plugin</artifactId>
				<version>${antrun.version}</version>
				<executions>
					<execution>
						<id>Flatten XSDs</id>
						<phase>initialize</phase>
						<goals>
							<goal>run</goal>
						</goals>
						<configuration>
							<target>
								<copy todir="${aai.schema.target.folder}" flatten="true">
									<fileset dir="${project.build.directory}/tmp">
										<include name="**/*.xsd" />
									</fileset>
								</copy>
							</target>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.jvnet.jaxb2.maven2</groupId>
				<artifactId>maven-jaxb2-plugin</artifactId>
				<version>${mvn.jaxb2.version}</version>
				<executions>
					<execution>
						<phase>process-sources</phase>
						<goals>
							<goal>generate</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<schemaDirectory>${aai.schema.target.folder}</schemaDirectory>
					<generatePackage>org.onap.aai.babel.xml.generator.xsd</generatePackage>
					<generateDirectory>${project.build.directory}/generated-sources</generateDirectory>
					<schemaIncludes>
						<include>aai_schema_latest.xsd</include>
					</schemaIncludes>
					<extension>true</extension>
					<args>
						<arg>-Xannotate</arg>
					</args>
					<plugins>
						<plugin>
							<groupId>org.jvnet.jaxb2_commons</groupId>
							<artifactId>jaxb2-basics-annotate</artifactId>
							<version>0.6.4</version>
						</plugin>
						<!-- Add the dependencies with your annotations as 'plugins' below -->
						<plugin>
							<groupId>org.jvnet.jaxb2_commons</groupId>
							<artifactId>jaxb2-annotate-plugin-test-annox-annotations</artifactId>
							<version>1.0.0</version>
						</plugin>
					</plugins>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>exec-maven-plugin</artifactId>
				<groupId>org.codehaus.mojo</groupId>
				<version>1.5.0</version>
				<executions>
					<execution><!-- Run our script to get latest xsd version -->
						<id>Get latest xsd version</id>
						<phase>generate-sources</phase>
						<goals>
							<goal>exec</goal>
						</goals>
						<configuration>
							<workingDirectory>${basedir}/scripts</workingDirectory>
							<executable>bash</executable>
							<commandlineArgs>get-latest-xsd-version.sh ${basedir}</commandlineArgs>
						</configuration>
					</execution>
				</executions>
			</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>
			<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>pom.xml</include>
					</includes>
					<skipExistingHeaders>true</skipExistingHeaders>
				</configuration>
				<executions>
					<execution>
						<goals>
							<!-- Set goal from "check" to "format" to auto update license headers -->
							<goal>check</goal>
						</goals>
						<phase>validate</phase>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<reuseForks>false</reuseForks>
					<forkCount>1</forkCount>
					<environmentVariables>
						<APP_HOME>.</APP_HOME>
						<CONFIG_HOME>src/test/resources</CONFIG_HOME>
					</environmentVariables>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>3.0.2</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>jar</goal>
						</goals>
						<configuration>
							<classifier>client</classifier>
							<includes>
								<include>**/babel/service/data/*</include>
							</includes>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-deploy-plugin</artifactId>
				<configuration>
					<classifier>client</classifier>
				</configuration>
			</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>
			      <exclude>org/onap/aai/babel/xml/generator/xsd/*</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, note the additional exclusion for babel above
			     -->
		</plugins>
	</build>

</project>
