<!--
  ============LICENSE_START=======================================================
  drools-pdp-apps
  ================================================================================
  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/xsd/maven-4.0.0.xsd">

	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.onap.oparent</groupId>
		<artifactId>oparent</artifactId>
		<version>1.0.0-SNAPSHOT</version>
		<relativePath/>
	</parent>

	<groupId>org.onap.policy.drools-applications</groupId>
	<artifactId>drools-pdp-apps</artifactId>
	<version>1.1.0-SNAPSHOT</version>

	<name>Policy Engine - Drools PDP Application Models</name>
	<packaging>pom</packaging>

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

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

	    </plugins>
        <pluginManagement>
            <plugins>
                <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>

	<modules>
		<module>controlloop</module>
	</modules>


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

	</distributionManagement>

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