<?xml version="1.0" encoding="UTF-8"?>
<!--
  ============LICENSE_START=======================================================
  Copyright (c) 2020 Linux Foundation.
  Modifications Copyright (C) 2020-2023 Nordix Foundation
  Modifications Copyright (C) 2020-2021 Pantheon.tech
  Modifications Copyright (C) 2021-2022 Bell Canada.
  ================================================================================
  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 https://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>org.onap.cps</groupId>
    <artifactId>cps-aggregator</artifactId>
    <version>3.5.6-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>cps</name>
    <description>ONAP Configuration Persistence Service</description>

    <organization>
        <name>ONAP - CPS</name>
        <url>http://www.onap.org/</url>
    </organization>

    <properties>
        <maven.deploy.skip>false</maven.deploy.skip>
        <maven.install.skip>false</maven.install.skip>
        <onap.nexus.url>https://nexus.onap.org</onap.nexus.url>
        <nexusproxy>https://nexus.onap.org</nexusproxy>
        <releaseNexusPath>/content/repositories/releases/</releaseNexusPath>
        <snapshotNexusPath>/content/repositories/snapshots/</snapshotNexusPath>
    </properties>

    <modules>
        <module>cps-dependencies</module>
        <module>cps-bom</module>
        <module>cps-parent</module>
        <module>cps-events</module>
        <module>cps-service</module>
        <module>cps-rest</module>
        <module>cps-ncmp-events</module>
        <module>cps-ncmp-service</module>
        <module>cps-ncmp-rest</module>
        <module>cps-ncmp-rest-stub</module>
        <module>cps-path-parser</module>
        <module>cps-ri</module>
        <module>integration-test</module>
        <module>checkstyle</module>
        <module>spotbugs</module>
        <module>cps-application</module>
        <module>jacoco-report</module>
        <module>policy-executor-stub</module>
    </modules>

    <distributionManagement>
        <repository>
            <id>ecomp-releases</id>
            <name>ECOMP Release Repository</name>
            <url>${onap.nexus.url}${releaseNexusPath}</url>
        </repository>
        <snapshotRepository>
            <id>ecomp-snapshots</id>
            <name>ECOMP Snapshot Repository</name>
            <url>${onap.nexus.url}${snapshotNexusPath}</url>
        </snapshotRepository>
    </distributionManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <version>2.8.1</version>
                <configuration>
                    <processAllModules>true</processAllModules>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
