<?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>
    <parent>
        <groupId>org.onap.oparent</groupId>
        <artifactId>oparent</artifactId>
        <version>3.2.0</version>
    </parent>

    <groupId>org.onap.cps</groupId>
    <artifactId>cps-aggregator</artifactId>
    <version>3.3.1-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>
    </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>
    </modules>

    <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>
