<?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.auth</groupId>
		<artifactId>parent</artifactId>
		<version>2.1.0-SNAPSHOT</version>
		<relativePath>../pom.xml</relativePath>
	</parent>

	<artifactId>aaf-auth-gui</artifactId>
	<name>AAF Auth GUI</name>
	<description>GUI Component for AAF Auth Management</description>

	<properties>
		<maven.test.failure.ignore>true</maven.test.failure.ignore>
	</properties>


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

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

		<dependency>
			<groupId>org.onap.aaf.auth</groupId>
			<artifactId>aaf-auth-cmd</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.auth</groupId>
			<artifactId>aaf-auth-deforg</artifactId>
		</dependency>

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

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

		<dependency>
			<groupId>org.onap.aaf.misc</groupId>
			<artifactId>aaf-misc-xgen</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>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-deploy-plugin</artifactId>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>appassembler-maven-plugin</artifactId>
				<configuration>
					<programs>
						<program>
							<mainClass>org.onap.aaf.auth.gui.AAF_GUI</mainClass>
							<name>gui</name>
							<commandLineArguments>
								<commandLineArgument>cadi_prop_files=${project.conf_dir}/org.osaaf.gui.props</commandLineArgument>
							</commandLineArguments>
							<jvmSettings>
								<extraArguments>
									<extraArgument>-Daaf_cfa_web_path=$BASEDIR/theme/onap</extraArgument>
								</extraArguments>
							</jvmSettings>
						</program>
					</programs>
					<copyConfigurationDirectory>true</copyConfigurationDirectory>
					<configurationDirectory>theme</configurationDirectory>
					<configurationSourceDirectory>theme</configurationSourceDirectory>
				</configuration>
				
			</plugin>
		</plugins>
	</build>


</project>
