<?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-gw</artifactId>
	<name>Authz Gate/Wall</name>
	<description>GW 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>
		<maven.test.failure.ignore>true</maven.test.failure.ignore>
		<project.swmVersion>30</project.swmVersion>
			<project.innoVersion>1.0.0-SNAPSHOT</project.innoVersion>
		<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>true</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>
         
            <exclusions>
			  <exclusion> 
					<groupId>javax.servlet</groupId>
       			<artifactId>servlet-api</artifactId>
       			       		   </exclusion>
		    </exclusions> 
        </dependency>
	    
		<dependency> 
			<groupId>org.onap.aaf.cadi</groupId>
			<artifactId>cadi-aaf</artifactId>
			<version>${project.cadiVersion}</version>
		</dependency>


		
	</dependencies>
	
	<build>
		<plugins>
			<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>jaxb2-maven-plugin</artifactId>
				</plugin>
	            <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>

	   <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>
	</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>
