<!--
  ============LICENSE_START=======================================================
  ECOMP Policy Engine - Drools PDP
  ================================================================================
  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>

	<groupId>org.openecomp.policy.common</groupId>
	<artifactId>common-modules</artifactId>
	<version>1.0.0-SNAPSHOT</version>

	<packaging>pom</packaging>

	<name>ECOMP Policy Engine - Common Modules</name>
	<description>Common Modules for Policy-Engine in both XACML and Drools flavor</description>

	<properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>


	<modules>
		<module>common-logging</module>
		<module>integrity-audit</module>
		<module>integrity-monitor</module>
		<module>site-manager</module>
	</modules>

	<repositories>
		<repository>
			<id>central</id>
			<name>Maven 2 repository</name>
			<url>http://repo2.maven.org/maven2/</url>
		</repository>
	</repositories>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-deploy-plugin</artifactId>
				<version>2.8</version> <!-- This version supports the "deployAtEnd" parameter -->
			</plugin>
						<!-- 
				license plugin
			     Run 
			     	mvn clean 
			     before running from the command line
			     	mvn license:update-file-header
			-->
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>license-maven-plugin</artifactId>
				<version>1.9</version>
				<configuration>
					<extraExtensions>
						<!-- Used to add or change the header style <fileTypeYouAreMapping> 
							fileTypeMappedInto </fileTypeYouAreMapping> -->
						<drl>java</drl>
						<ccf>properties</ccf>

						<!-- Because the typical sql comment type confuses the update algorithm -->
						<sql>java</sql>
					</extraExtensions>
					<licenseName>apache_v2</licenseName>

					<inceptionYear>2017</inceptionYear>
					<organizationName>AT&amp;T Intellectual Property. All rights reserved.</organizationName>

					<!-- Once you have established the tags and delimiter, they cannot be 
						changed -->
					<processStartTag>============LICENSE_START=======================================================</processStartTag>
					<processEndTag>============LICENSE_END=========================================================</processEndTag>
					<sectionDelimiter>================================================================================</sectionDelimiter>
					<addJavaLicenseAfterPackage>false</addJavaLicenseAfterPackage>
					<canUpdateCopyright>true</canUpdateCopyright>
					<canUpdateDescription>true</canUpdateDescription>
					<canUpdateLicense>true</canUpdateLicense>
					<emptyLineAfterHeader>true</emptyLineAfterHeader>
					<roots>
						<!-- Default is src, target/generated-sources, target/processed-sources -->

						<!-- Everything except the files in the excludes section -->
						<root>/</root>
					</roots>
					<excludes>
						<!-- Files which are to be excluded. The pom.xml is excluded because 
							the start/end tags and the delimiters are in the body of the file. This confuses 
							the algorithm. So, this file must be manually updated with a license header. -->
						<exclude>pom.xml</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
