<?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>com.att.authz</groupId>
		<artifactId>parent</artifactId>
		<version>2.0.15</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>
	</properties>
		
	<dependencies>
        <dependency>
            <groupId>com.att.authz</groupId>
            <artifactId>authz-core</artifactId>
        </dependency>

        <dependency>
            <groupId>com.att.authz</groupId>
            <artifactId>authz-cass</artifactId>
        </dependency>

     <!--     <dependency>
            <groupId>com.att.authz</groupId>
            <artifactId>authz-att</artifactId>
        </dependency>    -->
	    
		<dependency> 
			<groupId>com.att.cadi</groupId>
			<artifactId>cadi-aaf</artifactId>
		</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-deploy-plugin</artifactId>
					<configuration>
						<skip>true</skip>
					</configuration>
			    </plugin>
		
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-javadoc-plugin</artifactId>
			<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>
			<serverId>ossrhdme</serverId>
			<nexusUrl>https://oss.sonatype.org/</nexusUrl>
			<autoReleaseAfterClose>true</autoReleaseAfterClose>
			</configuration>
		</plugin>
			</plugins>
		<pluginManagement>
			<plugins/>
		</pluginManagement>
	</build>

	<distributionManagement>
    		<snapshotRepository>
      			<id>ossrhdme</id>
      			<url>https://oss.sonatype.org/content/repositories/snapshots</url>
    		</snapshotRepository>
    		<repository>
      			<id>ossrhdme</id>
      			<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    		</repository>
	</distributionManagement>
	
	<scm>
		<connection>https://github.com/att/AAF.git</connection>
		<developerConnection>${project.scm.connection}</developerConnection>
		<url>http://github.com/att/AAF/tree/master</url>
	</scm>
</project>
