<!--
  ============LICENSE_START=======================================================
  ONAP Policy Engine
  ================================================================================
  Copyright (C) 2017-2018 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.oparent</groupId>
		<artifactId>oparent</artifactId>
		<version>0.1.1</version>
		<relativePath/>
	</parent>

	<groupId>org.onap.policy.engine</groupId>
	<artifactId>PolicyEngineSuite</artifactId>
	<version>1.2.0-SNAPSHOT</version>
	<packaging>pom</packaging>
	<name>policy-engine</name>

	<description>The ONAP Policy Engine main pom</description>

	<properties>
		<!-- Project common build settings -->
		<project.source.version>1.8</project.source.version>
		<project.target.version>1.8</project.target.version>
		<project.encoding>UTF-8</project.encoding>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<!-- Project path properties -->
		<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>

		<!-- sonar/jacoco overrides -->
		<!-- Overriding oparent default sonar/jacoco settings Combine all our reports 
			into one file shared across sub-modules -->
		<sonar.jacoco.reportPath>${project.basedir}/../target/code-coverage/jacoco-ut.exec</sonar.jacoco.reportPath>
		<sonar.jacoco.itReportPath>${project.basedir}/../target/code-coverage/jacoco-it.exec</sonar.jacoco.itReportPath>
		<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>

		<!--
        	Shared between policy/* project repositories - same version 
        -->
		<h2.version>1.4.186</h2.version>

		<!--
        	Shared between policy/* project repositories - different version 
        -->

		<!-- Project common dependency versions -->
		<jetty.plugin.version>9.2.3.v20140905</jetty.plugin.version>
		<dmaap.version>1.0.0</dmaap.version>
		<httpclient.version>4.5.5</httpclient.version>
		<jackson.version>2.9.4</jackson.version>
		<commons.fileupload.version>1.3.3</commons.fileupload.version>
	</properties>


	<modules>
		<module>PolicyEngineUtils</module>
		<module>ONAP-XACML</module>
		<module>ONAP-REST</module>
		<module>PolicyEngineAPI</module>
		<module>ONAP-PDP</module>
		<module>ONAP-PDP-REST</module>
		<module>ONAP-PAP-REST</module>
		<module>LogParser</module>
		<module>PolicyEngineClient</module>
		<module>BRMSGateway</module>
		<module>POLICY-SDK-APP</module>
		<module>ONAP-SDK-APP</module>
		<module>packages</module>
	</modules>

	<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>

        <repositories>
                <!-- LF repositories -->
                <repository>
                        <id>ecomp-releases</id>
                        <name>Release Repository</name>
                        <url>${nexusproxy}/content/repositories/releases/</url>
                </repository>
                <repository>
                        <id>ecomp-staging</id>
                        <name>Staging Repository</name>
                        <url>${nexusproxy}/content/repositories/staging/</url>
                </repository>
                <repository>
                        <id>ecomp-snapshots</id>
                        <name>Snapshots Repository</name>
                        <url>${nexusproxy}/content/repositories/snapshots/</url>
                </repository>
                <repository>
                        <id>ecomp-public</id>
                        <name>Public Repository</name>
                        <url>${nexusproxy}/content/repositories/public/</url>
                </repository>
                <!-- LF repositories END-->
        </repositories>

	<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>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>com.h2database</groupId>
				<artifactId>h2</artifactId>
				<version>${h2.version}</version>
				<scope>test</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<dependencies>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
		</dependency>
		<dependency>
			<!-- org.w3c.dom dependencies -->
			<groupId>xml-apis</groupId>
			<artifactId>xml-apis</artifactId>
			<version>1.3.03</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
				<executions>
					<execution>
						<id>pre-unit-test</id>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
						<configuration>
							<destFile>${sonar.jacoco.reportPath}</destFile>
							<append>true</append>
						</configuration>
					</execution>
					<execution>
						<id>post-unit-test</id>
						<phase>test</phase>
						<goals>
							<goal>report</goal>
						</goals>
						<configuration>
							<dataFile>${sonar.jacoco.reportPath}</dataFile>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.sonatype.plugins</groupId>
				<artifactId>nexus-staging-maven-plugin</artifactId>
				<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>
				<configuration>
					<skip />
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-clean-plugin</artifactId>
				<version>2.4.1</version>
			</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>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.3</version>
				<configuration>
					<failOnMissingWebXml>false</failOnMissingWebXml>
				</configuration>
			</plugin>
			<!-- The Jetty plugin allows us to easily test the development build by
				running jetty:run on the command line. -->

			<plugin>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-maven-plugin</artifactId>
				<version>${jetty.plugin.version}</version>
				<configuration>
					<scanIntervalSeconds>2</scanIntervalSeconds>
				</configuration>
			</plugin>
			<plugin>
				<groupId>com.fortify.ps.maven.plugin</groupId>
				<artifactId>sca-maven-plugin</artifactId>
				<version>4.20</version>
			</plugin>
			<plugin>
			  <groupId>org.apache.maven.plugins</groupId>
			  <artifactId>maven-site-plugin</artifactId>
			  <dependencies>
			    <dependency>
			      <groupId>org.apache.maven.wagon</groupId>
			      <artifactId>wagon-webdav-jackrabbit</artifactId>
			      <version>2.10</version>
			    </dependency>
			  </dependencies>
			</plugin>
		</plugins>
        <pluginManagement>
            <plugins>
				<plugin>
					<groupId>org.jacoco</groupId>
					<artifactId>jacoco-maven-plugin</artifactId>
					<version>${jacoco.version}</version>
					<configuration>
						<!-- Note: This exclusion list should match <sonar.exclusions> property 
							above -->
						<excludes>
							<exclude>**/gen/**</exclude>
							<exclude>**/generated-sources/**</exclude>
							<exclude>**/yang-gen/**</exclude>
							<exclude>**/pax/**</exclude>
						</excludes>
					</configuration>
					<executions>
						<!-- Prepares the property pointing to the JaCoCo runtime agent which 
							is passed as VM argument when Maven the Surefire plugin is executed. -->
						<execution>
							<id>pre-unit-test</id>
							<goals>
								<goal>prepare-agent</goal>
							</goals>
							<configuration>
								<destFile>${sonar.jacoco.reportPath}</destFile>
							</configuration>
						</execution>
						<!-- Ensures that the code coverage report for unit tests is created 
							after unit tests have been run. -->
						<execution>
							<id>post-unit-test</id>
							<phase>test</phase>
							<goals>
								<goal>report</goal>
							</goals>
							<configuration>
								<dataFile>${sonar.jacoco.reportPath}</dataFile>
							</configuration>
						</execution>
					</executions>
				</plugin>
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-checkstyle-plugin</artifactId>
                                        <versionRange>2.17,)</versionRange>
                                        <goals>
                                            <goal>check</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
	</build>
</project>
