<!--
  ============LICENSE_START====================================================
  * org.onap.aai
  * ===========================================================================
  * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
  * Copyright © 2017 Amdocs
  * ===========================================================================
  * 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/xsd/maven-4.0.0.xsd">

	<modelVersion>4.0.0</modelVersion>
	<groupId>com.att.authz</groupId>
	<artifactId>parent</artifactId>
	<version>2.0.15</version>
	<name>Authz Parent (pom)</name>
	<packaging>pom</packaging>
	<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>
	<description>This module is used to organize all of the common SWM (Software Manager) 
		artifacts and capabilities that are inherited by all modules that are SWM
		packaged.  This prevents duplication of these common artifacts, plugins, and 
		other settings and provides a single place to support this configuration.
	</description>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<skipTests>false</skipTests>
		<project.interfaceVersion>2.6</project.interfaceVersion>
		<project.innoVersion>1.2.13</project.innoVersion>
		<project.cadiVersion>1.3.2</project.cadiVersion>
		<project.dme2Version>3.1.200</project.dme2Version>
				<!-- version>  2.8.8</version -->
				<!-- version>  2.8.5.8</version -->
				<!-- version>  2.8.2.5</version -->
				<!-- version>2.8.1.3</version -->
				<!-- version>2.8.1</version This version changes Servlet to 3.0-->
				<!-- version>2.6.29</version -->
				<!-- version>2.6.20</version -->
		
	</properties>

	<build>
		<pluginManagement>
	    	<plugins>
			  <plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>2.3.2</version> 
					<configuration>
						<source>1.8</source>
						<target>1.8</target>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-deploy-plugin</artifactId>
					<version>2.6</version>
						<configuration>
							<skip>false</skip>
						</configuration>        
				</plugin>
	
				<plugin>
				  <groupId>org.apache.maven.plugins</groupId>
				  <artifactId>maven-surefire-plugin</artifactId>
				  <version>2.17</version>
				  <configuration>
					<skipTests>${skipTests}</skipTests>
					<includes>
					  <include>**/JU*.java</include>
					</includes>
					<excludes>
					<exclude>**/JU_DataFile.java</exclude>
					<exclude>**/JU_ArtiDAO.java</exclude>
					<exclude>**/JU_CertDAO.java</exclude>
					<exclude>**/JU_FastCalling.java</exclude>
					<exclude>**/JU_NsDAO.java</exclude>
					  <!-- <exclude>**/authz-cass/**</exclude> -->
					  <!-- <exclude>**/JU_UseCase1.java</exclude> -->
					  <exclude>**/JU_RoleDAO.java</exclude>
					  <exclude>**/JU_PermDAO.java</exclude>
					   <exclude>**/JU_Question.java</exclude> 
					  <!-- <exclude>**/JU_NS.java</exclude> -->
					  <exclude>**/JU_HistoryDAO.java</exclude>				  
					  <exclude>**/JU_DelegateDAO.java</exclude>
					  <exclude>**/JU_CredDAO.java</exclude>
					  <exclude>**/JU_CacheInfoDAO.java</exclude>
					  <exclude>**/JU_ApprovalDAO.java</exclude>
					  <exclude>**/JU_Define.java</exclude>
					  <exclude>**/JU_AuthzTransFilter.java</exclude>
					  <exclude>**/JU_CachingFileAccess.java</exclude>
					  <!-- <exclude>**/AbsServiceTest.java</exclude> -->
					  <exclude>**/JU_DefaultOrg.java</exclude>
					  <!-- <exclude>**/JU_Perm_2_0*.java</exclude> -->
					  <!-- <exclude>**/JU_Role_2_0*.java</exclude>				   -->
					</excludes>
	
				  </configuration>
				</plugin>
	
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>jaxb2-maven-plugin</artifactId>
					<version>1.3</version>
					<executions>
						<execution>
							<phase>generate-sources</phase>
							<goals>
								<goal>xjc</goal>
							</goals>
						</execution>
					</executions>
					<configuration>
						<schemaDirectory>src/main/xsd</schemaDirectory>
					</configuration>
				</plugin>
	
				<plugin>
				  <groupId>org.apache.maven.plugins</groupId>
				  <artifactId>maven-failsafe-plugin</artifactId>
				  <version>2.17</version>
				  <configuration>
		  				<skipTests>true</skipTests>
				  </configuration>
				  <executions>
					<execution>
					  <id>integration-test</id>
					  <goals>
						<goal>integration-test</goal>
						<goal>verify</goal>
					  </goals>
					</execution>
				  </executions>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-jarsigner-plugin</artifactId>
					<version>1.2</version>
					<executions>
						<execution>
							<id>sign</id>
							<goals>
								<goal>sign</goal>
							</goals>
							<configuration>
								<!--  skip>${skipSigning}</skip -->
								<archive>target/${project.artifactId}-${project.version}.jar</archive>
							</configuration>
						</execution>
						<execution>
							<id>verify</id>
							<goals>
								<goal>verify</goal>
							</goals>
							<configuration>
								<archive>target/${project.artifactId}-${project.version}.jar</archive>
							</configuration>
						</execution>
					</executions>
					<configuration>
						<skip>true</skip>
						<alias>aaf</alias>
						<keystore>/Volumes/Data/src/cadi/keys/aaf_cadi.jks</keystore>
						<storepass>Surprise!</storepass>
						<keypass>Surprise!</keypass>
						<verbose>true</verbose>
						<certs>true</certs>
					</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>
			
		<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>cobertura-maven-plugin</artifactId>
				<version>2.7</version>
				<configuration>
					<formats>
					<format>html</format>
					<format>xml</format>
				  </formats>
				</configuration>
			</plugin>
		
				
	    	</plugins>
		</pluginManagement>			
    </build>	
    	
	<dependencies> 
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.10</version>
			<scope>test</scope>
		</dependency>

		<dependency>
		    <groupId>org.mockito</groupId>
		    <artifactId>mockito-core</artifactId>
		    <version>1.10.19</version>
		    <scope>test</scope>
		</dependency>
		<dependency>
		    <groupId>org.powermock</groupId>
		    <artifactId>powermock-module-junit4</artifactId>
		    <version>1.6.4</version>
		    <scope>test</scope>
		</dependency>
		<dependency>
		    <groupId>org.powermock</groupId>
		    <artifactId>powermock-api-mockito</artifactId>
		    <version>1.6.4</version>
		    <scope>test</scope>
		</dependency> 

    	 
	</dependencies>    	

	<modules>
		<!-- 
		   <module> auth-client</module>
		   complile manually with mvn -N independently
		-->
		<module>authz-client</module>
		<module>authz-core</module>
		<module>authz-cass</module>
		<module>authz-defOrg</module>
		<module>authz-service</module>
 		<module>authz-cmd</module>
 		<!--  <module>authz-batch</module>-->
 		<module>authz-test</module>
 		<!--  <module>authz-gui</module> -->
 		<module>authz-gw</module>
 		<module>authz-certman</module>
 		<module>authz-fs</module>
 	</modules>
	
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>com.att.inno</groupId>
				<artifactId>env</artifactId>
				<version>${project.innoVersion}</version>
			</dependency>

			<dependency>
				<groupId>com.att.inno</groupId>
				<artifactId>log4j</artifactId>
				<version>${project.innoVersion}</version>
			</dependency>

			<dependency>
				<groupId>com.att.inno</groupId>
				<artifactId>rosetta</artifactId>
				<version>${project.innoVersion}</version>
			</dependency>

			<dependency>
				<groupId>com.att.inno</groupId>
				<artifactId>xgen</artifactId>
				<version>${project.innoVersion}</version>
			</dependency>
			
			<dependency>
				<groupId>com.att.cadi</groupId>
				<artifactId>cadi-core</artifactId>
				<version>${project.cadiVersion}</version>
			</dependency>

			<dependency>
				<groupId>com.att.cadi</groupId>
				<artifactId>cadi-client</artifactId>
				<version>${project.cadiVersion}</version>
			</dependency>
			
			
			<dependency>
				<groupId>com.att.cadi</groupId>
				<artifactId>cadi-aaf</artifactId>
				<version>${project.cadiVersion}</version>
				<exclusions>
			      <exclusion> 
					<groupId>org.apache.cassandra</groupId>
		    		<artifactId>cassandra-all</artifactId>
    		      </exclusion>
			    </exclusions> 
			</dependency>
			
			<dependency>
				<groupId>com.att.authz</groupId>
				<artifactId>authz-client</artifactId>
				<version>${project.interfaceVersion}</version>
			</dependency>
			
			
			<dependency>
				<groupId>com.att.authz</groupId>
				<artifactId>authz-core</artifactId>
				<version>${project.version}</version>
			</dependency>
			
			<dependency>
	            <groupId>com.att.authz</groupId>
	            <artifactId>authz-cass</artifactId>
				<version>${project.version}</version>
	        </dependency>
	        
	        <dependency>
				<groupId>com.att.authz</groupId>
				<artifactId>authz-batch</artifactId>
				<version>${project.interfaceVersion}</version>
			</dependency>
	    
	    <!--  <dependency>
	            <groupId>com.att.authz</groupId>
	            <artifactId>authz-att</artifactId>
				<version>${project.version}</version>
	        </dependency>     --> 

		    <dependency>
	            <groupId>com.att.authz</groupId>
	            <artifactId>authz-cmd</artifactId>
				<version>${project.version}</version>
	        </dependency>
	        <dependency>
	            <groupId>com.att.authz</groupId>
	            <artifactId>authz-gw</artifactId>
				<version>${project.version}</version>
	        </dependency>

			<dependency>
				<groupId>com.att.aft</groupId>
				<artifactId>dme2</artifactId>
				<!--  version>2.6.20</version -->
				<!-- version>2.6.29</version -->
				<!-- version>2.8.1</version This version changes Servlet to 3.0-->
				<!-- version>2.8.1.3</version -->
				<!-- version>2.8.2.5</version -->
				<version>${project.dme2Version}</version>
			</dependency>
		
			<dependency>
			  <groupId>javax.servlet</groupId>
			  <artifactId>servlet-api</artifactId>
			  <version>2.5</version>
			</dependency>
			
			<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-servlet</artifactId>
				<version>9.0.3.v20130506</version>
			</dependency>
			
			<dependency>
				<groupId>com.datastax.cassandra</groupId>
				<artifactId>cassandra-all</artifactId>
				<version>2.1.10</version>
				<exclusions>
			      <exclusion> 
			        <groupId>org.slf4j</groupId>
			        <artifactId>slf4j-log4j12</artifactId>
			      </exclusion>
			      <exclusion> 
			        <groupId>log4j</groupId>
			        <artifactId>log4j</artifactId>
			      </exclusion>
			    </exclusions> 
			</dependency>
			<dependency>
				<groupId>com.datastax.cassandra</groupId>
				<artifactId>cassandra-driver-core</artifactId>
				<!-- version>1.0.3</version -->
				<!-- version>1.0.5</version -->
				<version>2.1.10</version>
				<exclusions>
			      <exclusion> 
			        <groupId>org.slf4j</groupId>
			        <artifactId>slf4j-log4j12</artifactId>
			      </exclusion>
			      <exclusion> 
			        <groupId>log4j</groupId>
			        <artifactId>log4j</artifactId>
			      </exclusion>
			    </exclusions> 
			</dependency>	

			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-log4j12</artifactId>
				<version>1.7.5</version>
			</dependency>

			<dependency>
	      		<groupId>javax.mail</groupId>
	      		<artifactId>mail</artifactId>
	      		<version>1.4.5</version>
	    	</dependency> 

			
		</dependencies>
	</dependencyManagement>
	
	
<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>	
