<!--
  ============LICENSE_START=======================================================
  ONAP Policy SDC Service Distribution
  ================================================================================
  Copyright (C) 2018, 2020-2021 AT&T Intellectual Property. All rights reserved.
  Copyright (C) 2019 Nordix Foundation.
  Modifications Copyright (C) 2020 AT&T Inc.
  Modifications Copyright (C) 2021 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 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>5.0.2-SNAPSHOT</version>
        <relativePath />
    </parent>

    <groupId>org.onap.policy.distribution</groupId>
    <artifactId>policy-distribution</artifactId>
    <version>4.0.2-SNAPSHOT</version>

    <packaging>pom</packaging>

    <name>policy-distribution</name>
    <description>Code that implements our integration with SDC service distribution API.</description>

    <properties>
        <!-- Default Sonar configuration -->
        <jacoco.dataFile>${project.basedir}/../target/code-coverage/jacoco-ut.exec</jacoco.dataFile>

        <policy.common.version>3.0.2-SNAPSHOT</policy.common.version>
        <policy.models.version>4.0.2-SNAPSHOT</policy.models.version>
        <surefireArgLine>
            --add-opens java.base/java.lang=ALL-UNNAMED
        </surefireArgLine>
    </properties>

    <modules>
        <module>model</module>
        <module>main</module>
        <module>reception</module>
        <module>forwarding</module>
        <module>plugins</module>
        <module>packages</module>
        <module>testsuites</module>
    </modules>

    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.common</groupId>
            <artifactId>policy-endpoints</artifactId>
            <version>${policy.common.version}</version>
        </dependency>
    </dependencies>

    <distributionManagement>
        <site>
            <id>ecomp-site</id>
            <url>dav:${nexusproxy}${sitePath}</url>
        </site>
    </distributionManagement>
</project>
