<!--
  ============LICENSE_START=======================================================
  ONAP 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.onap.policy.drools-pdp</groupId>
	<artifactId>drools-pdp</artifactId>
	<version>1.1.0-SNAPSHOT</version>
	<packaging>pom</packaging>
	<name>Policy Engine - Drools PDP</name>

	<description>The ONAP Policy Engine drools-based PDP Project</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>
		<project.source.version>1.8</project.source.version>
		<project.target.version>1.8</project.target.version>
		<common-modules.version>1.1.0-SNAPSHOT</common-modules.version>
		<dmaap.version>0.2.12</dmaap.version>
		<cambria.version>0.0.1</cambria.version>
		<jersey.version>2.22.2</jersey.version>
		<jersey.swagger.version>1.5.13</jersey.swagger.version>
		<jackson.version>2.8.4</jackson.version>
		<http.client.version>4.5</http.client.version>
		<http.core.version>4.4.4</http.core.version>
		<logback.version>1.2.3</logback.version>
		<sonar.plugin.version>3.2</sonar.plugin.version>
		<jacoco.plugin.version>0.7.9</jacoco.plugin.version>
  
		<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.reportMissing.force.zero>false</sonar.jacoco.reportMissing.force.zero>
		<sonar.projectVersion>${project.version}</sonar.projectVersion>

		<nexusproxy>https://nexus.onap.org</nexusproxy>
		<sitePath>/content/sites/site/${project.groupId}/${project.artifactId}/${project.version}</sitePath>
		<releases.path>content/repositories/releases/</releases.path>
		<snapshots.path>content/repositories/snapshots/</snapshots.path>
		<staging.path>content/repositories/staging/</staging.path>
	</properties>

	<modules>
		<module>policy-utils</module>
		<module>policy-core</module>
		<module>policy-endpoints</module>
		<module>policy-management</module>
		<module>feature-healthcheck</module>
		<module>feature-eelf</module>
		<module>packages</module>
	</modules>

	<repositories>
		<repository>
			<id>ecomp-snapshots</id>
			<name>ONAP Snapshot Repository</name>
			<url>${nexusproxy}/${snapshots.path}</url>
		</repository>
		<repository>
			<id>ecomp-releases</id>
			<name>ONAP Release Repository</name>
			<url>${nexusproxy}/${releases.path}</url>
		</repository>
		<repository>
			<id>ecomp-staging</id>
			<name>ONAP Staging Repository</name>
			<url>${nexusproxy}/${staging.path}</url>
		</repository>
	</repositories>

	<distributionManagement>
		<repository>
			<id>ecomp-releases</id>
			<name>ONAP Release Repository</name>
			<url>${nexusproxy}/${releases.path}</url>
		</repository>
		<snapshotRepository>
			<id>ecomp-snapshots</id>
			<name>ONAP Snapshot Repository</name>
			<url>${nexusproxy}/${snapshots.path}</url>
		</snapshotRepository>
		<site>
			<id>ecomp-site</id>
			<url>dav:${nexusproxy}${sitePath}</url>
		</site>
	</distributionManagement>

	<dependencies/>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>com.google.guava</groupId>
				<artifactId>guava</artifactId>
				<version>16.0.1</version>
			</dependency>
			<dependency>
				<groupId>javax.ws.rs</groupId>
				<artifactId>javax.ws.rs-api</artifactId>
				<version>2.0.1</version>
			</dependency>
			<dependency>
				<groupId>org.glassfish.hk2.external</groupId>
				<artifactId>javax.inject</artifactId>
				<version>2.4.0-b31</version>
			</dependency>
			<dependency>
				<groupId>com.fasterxml.jackson.jaxrs</groupId>
				<artifactId>jackson-jaxrs-base</artifactId>
				<version>${jackson.version}</version>
			</dependency>
			<dependency>
				<groupId>com.fasterxml.jackson.jaxrs</groupId>
				<artifactId>jackson-jaxrs-json-provider</artifactId>
				<version>${jackson.version}</version>
			</dependency>
			<dependency>
				<groupId>com.fasterxml.jackson.dataformat</groupId>
				<artifactId>jackson-dataformat-xml</artifactId>
				<version>${jackson.version}</version>
			</dependency>
			<dependency>
				<groupId>com.fasterxml.jackson.dataformat</groupId>
				<artifactId>jackson-dataformat-yaml</artifactId>
				<version>${jackson.version}</version>
			</dependency>
			<dependency>
				<groupId>com.fasterxml.jackson.datatype</groupId>
				<artifactId>jackson-datatype-joda</artifactId>
				<version>${jackson.version}</version>
			</dependency>
			<dependency>
				<groupId>org.glassfish.jersey.containers</groupId>
				<artifactId>jersey-common</artifactId>
				<version>${jersey.version}</version>
			</dependency>
			<dependency>
				<groupId>org.glassfish.jersey.containers</groupId>
				<artifactId>jersey-container-servlet-core</artifactId>
				<version>${jersey.version}</version>
			</dependency>
			<dependency>
				<groupId>io.swagger</groupId>
				<artifactId>swagger-jersey2-jaxrs</artifactId>
				<version>${jersey.swagger.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.httpcomponents</groupId>
				<artifactId>httpclient</artifactId>
				<version>${http.client.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.httpcomponents</groupId>
				<artifactId>httpcore</artifactId>
				<version>${http.core.version}</version>
			</dependency>
			<dependency>
				<groupId>ch.qos.logback</groupId>
				<artifactId>logback-classic</artifactId>
				<version>${logback.version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<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.apache.maven.plugins</groupId>
				<artifactId>maven-deploy-plugin</artifactId>
				<version>2.8</version> <!-- This version supports the "deployAtEnd" parameter -->
				<configuration>
					<skip />
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.0</version>
				<configuration>
					<encoding>${project.encoding}</encoding>
					<source>${project.source.version}</source>
					<target>${project.target.version}</target>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<version>2.6</version>
				<configuration>
					<encoding>${project.encoding}</encoding>
				</configuration>
			</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>
			<plugin>
			  <groupId>org.apache.maven.plugins</groupId>
			  <artifactId>maven-site-plugin</artifactId>
			  <version>3.6</version>
			  <dependencies>
			    <dependency>
			      <groupId>org.apache.maven.wagon</groupId>
			      <artifactId>wagon-webdav-jackrabbit</artifactId>
			      <version>2.10</version>
			    </dependency>
			  </dependencies>
			</plugin>

			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
			</plugin>

			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>sonar-maven-plugin</artifactId>
			</plugin>
		</plugins>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.jacoco</groupId>
					<artifactId>jacoco-maven-plugin</artifactId>
					<version>${jacoco.plugin.version}</version>
					<configuration>
						<dumpOnExit>true</dumpOnExit>
						<includes>
							<include>org.onap.*</include>
						</includes>
					</configuration>
					<executions>
						<execution>
							<id>jacoco-initialize-unit-tests</id>
							<goals>
								<goal>prepare-agent</goal>
							</goals>
							<configuration>
								<destFile>${project.build.directory}/coverage-reports/jacoco.exec</destFile>
							</configuration>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>sonar-maven-plugin</artifactId>
					<version>${sonar.plugin.version}</version>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
	<reporting>
	  <plugins>
	    <plugin>
	      <groupId>org.apache.maven.plugins</groupId>
	      <artifactId>maven-javadoc-plugin</artifactId>
	      <version>2.10.4</version>
	      <configuration>
		<failOnError>false</failOnError>
		<doclet>org.umlgraph.doclet.UmlGraphDoc</doclet>
		<docletArtifact>
		  <groupId>org.umlgraph</groupId>
		  <artifactId>umlgraph</artifactId>
		  <version>5.6</version>
		</docletArtifact>
		<additionalparam>-views</additionalparam>
		<useStandardDocletOptions>true</useStandardDocletOptions>
	      </configuration>
	    </plugin>
	  </plugins>
	</reporting>

</project>
