<?xml version="1.0" encoding="UTF-8"?>
<!--
  ============LICENSE_START====================================================
  * org.onap.aaf
  * ===========================================================================
  * Copyright © 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====================================================
  *
  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  *
-->
<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>parent</artifactId>
		<version>1.0.1-SNAPSHOT</version>
		<relativePath>../pom.xml</relativePath>
	</parent>
		
	<artifactId>authz-certman</artifactId>
	<name>AAF Certification Managmenent</name>
	<description>Certificate Manager API</description>
		<url>https://github.com/att/AAF</url>
	<licenses>
		<license>
		<name>BSD License</name>
		<url> </url>
		</license>
	</licenses>
	<developers>
		<developer>
		<name>Jonathan Gathman</name>
		<email></email>
	<organization>ATT</organization>
	<organizationUrl></organizationUrl>
		</developer>
	</developers>


	<properties>
		<project.swmVersion>45</project.swmVersion>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.cadiVersion>1.0.0-SNAPSHOT</project.cadiVersion>
		<sonar.language>java</sonar.language>
		<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
		<sonar.surefire.reportsPath>${project.build.directory}/surefire-reports</sonar.surefire.reportsPath>
		<sonar.jacoco.reportPath>${project.build.directory}/coverage-reports/jacoco.exec</sonar.jacoco.reportPath>
		<sonar.jacoco.itReportPath>${project.build.directory}/coverage-reports/jacoco-it.exec</sonar.jacoco.itReportPath>
		<sonar.jacoco.reportMissing.force.zero>false</sonar.jacoco.reportMissing.force.zero>
		<sonar.projectVersion>${project.version}</sonar.projectVersion>
        <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>authz-core</artifactId>
			<version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>org.onap.aaf.authz</groupId>
            <artifactId>authz-cass</artifactId>
			<version>${project.version}</version>
        </dependency>

	    
		<dependency> 
			<groupId>org.onap.aaf.cadi</groupId>
			<artifactId>cadi-aaf</artifactId>
			<version>${project.cadiVersion}</version>
		</dependency>
		
		<dependency>
			<groupId>com.google.code.jscep</groupId>
			<artifactId>jscep</artifactId>
			<version>2.4.0</version>
		</dependency>
		<!--  TESTING -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
		</dependency>
	</dependencies>
	
	<build>
		<plugins>
            <plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
					<configuration>
	                	<includes>
	                		<include>**/*.class</include>
	                	</includes>
					</configuration>
					<version>2.3.1</version>
				</plugin>
			    
				<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
			
			 
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-javadoc-plugin</artifactId>
			<version>2.10.4</version>
			<configuration>
			<failOnError>false</failOnError>
			</configuration>
			<executions>
				<execution>
					<id>attach-javadocs</id>
					<goals>
						<goal>jar</goal>
					</goals>
				</execution>
			</executions>
		</plugin>  
	   
	   
	       <plugin>
		      <groupId>org.apache.maven.plugins</groupId>
		      <artifactId>maven-source-plugin</artifactId>
		      <version>2.2.1</version>
		      <executions>
			<execution>
			  <id>attach-sources</id>
			  <goals>
			    <goal>jar-no-fork</goal>
			  </goals>
			</execution>
		      </executions>
		    </plugin> 
			<plugin>
				<groupId>org.sonatype.plugins</groupId>
				<artifactId>nexus-staging-maven-plugin</artifactId>
				<version>1.6.7</version>
				<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>
          <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>
          </executions>
        </plugin>                    


			</plugins>
		<pluginManagement>
			<plugins/>
		</pluginManagement>
	</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>
