<?xml version="1.0" encoding="UTF-8"?>
<!-- * ============LICENSE_START==================================================== 
	* org.onap.aaf * =========================================================================== 
	* Copyright (c) 2017 AT&T Intellectual Property. All rights reserved. * =========================================================================== 
	* 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.onap.aaf.authz</groupId>
		<artifactId>authparent</artifactId>
		<version>2.1.11-SNAPSHOT</version>
		<relativePath>../pom.xml</relativePath>
	</parent>

	<artifactId>aaf-auth-service</artifactId>
	<name>AAF Auth Service</name>
	<description>Core API Component for AAF Auth</description>

	<properties>
		<maven.test.failure.ignore>true</maven.test.failure.ignore>
		<!-- <sonar.skip>true</sonar.skip> -->
		<!-- SONAR -->
		<jacoco.version>0.7.7.201606060606</jacoco.version>
		<sonar-jacoco-listeners.version>3.2</sonar-jacoco-listeners.version>
		<sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
		<!-- Default Sonar configuration -->
		<sonar.jacoco.reportPaths>target/code-coverage/jacoco-ut.exec</sonar.jacoco.reportPaths>
		<sonar.jacoco.itReportPaths>target/code-coverage/jacoco-it.exec</sonar.jacoco.itReportPaths>
		<!-- Note: This list should match jacoco-maven-plugin's exclusion list 
			below -->
		<sonar.exclusions>**/gen/**,**/generated-sources/**,**/yang-gen**,**/pax/**</sonar.exclusions>
		<nexusproxy>https://nexus.onap.org</nexusproxy>
		<snapshotNexusPath>/content/repositories/snapshots/</snapshotNexusPath>
		<releaseNexusPath>/content/repositories/releases/</releaseNexusPath>
		<stagingNexusPath>/content/repositories/staging/</stagingNexusPath>
		<sitePath>/content/sites/site/org/onap/aaf/authz/${project.artifactId}/${project.version}</sitePath>

	</properties>

	<dependencies>
		<dependency>
			<groupId>org.onap.aaf.authz</groupId>
			<artifactId>aaf-auth-client</artifactId>
		</dependency>

		<dependency>
			<groupId>org.onap.aaf.authz</groupId>
			<artifactId>aaf-auth-core</artifactId>
		</dependency>

		<!-- Add the Organizations you wish to support. You can delete ONAP if 
			you have something else Match with Property Entry: Organization.<root ns>, 
			i.e. Organization.onap.org=org.onap.org.DefaultOrg -->
		<dependency>
			<groupId>org.onap.aaf.authz</groupId>
			<artifactId>aaf-auth-deforg</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.onap.aaf.authz</groupId>
			<artifactId>aaf-auth-cass</artifactId>
		</dependency>

		<dependency>
			<groupId>org.onap.aaf.authz</groupId>
			<artifactId>aaf-auth-oauth</artifactId>
		</dependency>

		<dependency>
			<groupId>org.onap.aaf.authz</groupId>
			<artifactId>aaf-misc-rosetta</artifactId>
		</dependency>

		<dependency>
			<groupId>org.onap.aaf.authz</groupId>
			<artifactId>aaf-cadi-aaf</artifactId>
		</dependency>

		<dependency>
			<groupId>org.eclipse.jetty</groupId>
			<artifactId>jetty-servlet</artifactId>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>*.properties</exclude>
					</excludes>
				</configuration>
				<version>2.3.1</version>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-deploy-plugin</artifactId>
				<configuration>
					<skip>false</skip>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>appassembler-maven-plugin</artifactId>
				<configuration>
					<programs>
						<program>
							<mainClass>org.onap.aaf.auth.service.AAF_Service</mainClass>
							<name>service</name>
							<commandLineArguments>
								<commandLineArgument>cadi_prop_files=${project.ext_root_dir}/etc/org.osaaf.aaf.service.props</commandLineArgument>
								<commandLineArgument>cadi_log_dir=${project.ext_root_dir}/logs/service</commandLineArgument>
								<commandLineArgument>cadi_etc_dir=${project.ext_root_dir}/etc</commandLineArgument>
							</commandLineArguments>
						</program>
					</programs>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.sonatype.plugins</groupId>
				<artifactId>nexus-staging-maven-plugin</artifactId>
				<extensions>true</extensions>
				<configuration>
					<nexusUrl>${nexusproxy}</nexusUrl>
					<stagingProfileId>176c31dfe190a</stagingProfileId>
					<serverId>ecomp-staging</serverId>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>**/gen/**</exclude>
						<exclude>**/generated-sources/**</exclude>
						<exclude>**/yang-gen/**</exclude>
						<exclude>**/pax/**</exclude>
					</excludes>
				</configuration>
				<executions>

					<execution>
						<id>pre-unit-test</id>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
						<configuration>
							<destFile>${project.build.directory}/code-coverage/jacoco-ut.exec</destFile>
							<propertyName>surefireArgLine</propertyName>
						</configuration>
					</execution>


					<execution>
						<id>post-unit-test</id>
						<phase>test</phase>
						<goals>
							<goal>report</goal>
						</goals>
						<configuration>
							<dataFile>${project.build.directory}/code-coverage/jacoco-ut.exec</dataFile>
							<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>
							<destFile>${project.build.directory}/code-coverage/jacoco-it.exec</destFile>
							<propertyName>failsafeArgLine</propertyName>
						</configuration>
					</execution>

					<execution>
						<id>post-integration-test</id>
						<phase>post-integration-test</phase>
						<goals>
							<goal>report</goal>
						</goals>
						<configuration>
							<dataFile>${project.build.directory}/code-coverage/jacoco-it.exec</dataFile>
							<outputDirectory>${project.reporting.outputDirectory}/jacoco-it</outputDirectory>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<!-- plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> 
				</plugin -->
		</plugins>
	</build>

	<distributionManagement>
		<repository>
			<id>ecomp-releases</id>
			<name>AAF Release Repository</name>
			<url>${nexusproxy}${releaseNexusPath}</url>
		</repository>
		<snapshotRepository>
			<id>ecomp-snapshots</id>
			<name>AAF Snapshot Repository</name>
			<url>${nexusproxy}${snapshotNexusPath}</url>
		</snapshotRepository>
		<site>
			<id>ecomp-site</id>
			<url>dav:${nexusproxy}${sitePath}</url>
		</site>
	</distributionManagement>

</project>
