<!--
  ============LICENSE_START=======================================================
  ONAP policy
  ================================================================================
  Copyright (C) 2017-2021 AT&T Intellectual Property. All rights reserved.
  Modifications Copyright (C) 2019-2020 Nordix Foundation.
  ================================================================================
  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.policy.parent</groupId>
        <artifactId>integration</artifactId>
        <version>3.4.2</version>
        <relativePath />
    </parent>

    <groupId>org.onap.policy.common</groupId>
    <artifactId>common-modules</artifactId>
    <version>1.9.0-SNAPSHOT</version>

    <packaging>pom</packaging>

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

    <properties>
        <!-- Project common build settings -->

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

        <!-- Project common dependency versions -->
        <commons-lang3.version>3.4</commons-lang3.version>
    </properties>

    <modules>
        <module>capabilities</module>
        <module>utils-test</module>
        <module>utils</module>
        <module>gson</module>
        <module>common-logging</module>
        <module>common-parameters</module>
        <module>integrity-audit</module>
        <module>integrity-monitor</module>
        <module>policy-endpoints</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons-lang3.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <build>
        <plugins>
            <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-site-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.wagon</groupId>
                        <artifactId>wagon-webdav-jackrabbit</artifactId>
                        <version>2.10</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </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>
