<!--
  ============LICENSE_START=======================================================
   Copyright (C) 2018 Ericsson. All rights reserved.
   Modifications Copyright (C) 2019-2020, 2022-2024 Nordix Foundation.
   Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
   Modifications Copyright (C) 2020-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.

  SPDX-License-Identifier: Apache-2.0
  ============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.policy.parent</groupId>
        <artifactId>integration</artifactId>
        <version>4.1.4</version>
        <relativePath />
    </parent>

    <groupId>org.onap.policy.apex-pdp</groupId>
    <artifactId>apex-pdp</artifactId>
    <version>3.1.3-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>policy-apex-pdp</name>
    <description>Packaging for all the Apex components, the engine, the WAR service, and the editor.</description>

    <properties>
        <encoding>UTF-8</encoding>
        <file.encoding>UTF-8</file.encoding>
        <sonar.javascript.lcov.reportPaths>${project.basedir}/target/code-coverage/lcov.info
        </sonar.javascript.lcov.reportPaths>

        <!-- Policy framework dependencies -->
        <version.policy.common>2.1.3</version.policy.common>
        <version.policy.models>3.1.3</version.policy.models>

        <!-- Apex-specific dependencies -->
        <version.activemq>5.18.3</version.activemq>
        <version.antlr.st4>4.3.4</version.antlr.st4>
        <version.antlr-runtime>4.13.1</version.antlr-runtime>
        <version.artemis>2.30.0</version.artemis>
        <version.avro>1.11.3</version.avro>
        <version.caffeine>3.1.8</version.caffeine>
        <version.curator>5.5.0</version.curator>
        <version.hazelcast>5.3.1</version.hazelcast>
        <version.infinispan>14.0.13.Final</version.infinispan>
        <version.jgroups>5.2.18.Final</version.jgroups>
        <version.jms>3.1.0</version.jms>
        <version.jnr.jffi>1.3.12</version.jnr.jffi>
        <version.jnr.jnr-posix>3.1.19</version.jnr.jnr-posix>
        <version.jruby-core>9.4.6.0</version.jruby-core>
        <version.jruby-joni>2.2.1</version.jruby-joni>
        <version.jruby-extras-bytelist>1.0.15</version.jruby-extras-bytelist>
        <version.jython-standalone>2.7.3</version.jython-standalone>
        <version.kafka-avro-serializer>7.5.1</version.kafka-avro-serializer>
        <version.kafka-junit4>3.2.5</version.kafka-junit4>
        <version.rhino>1.7.14</version.rhino>
        <version.websocket.jakarta>2.1.1</version.websocket.jakarta>
        <version.zookeeper>3.9.1</version.zookeeper>
    </properties>

    <distributionManagement>
        <site>
            <id>ecomp-site</id>
            <url>dav:${onap.nexus.url}${sitePath}</url>
        </site>
    </distributionManagement>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-junit-jupiter</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.awaitility</groupId>
            <artifactId>awaitility</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-ext</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>jakarta.xml.bind</groupId>
            <artifactId>jakarta.xml.bind-api</artifactId>
        </dependency>
        <dependency>
            <groupId>jakarta.activation</groupId>
            <artifactId>jakarta.activation-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.onap.policy.common</groupId>
                <artifactId>utils</artifactId>
                <version>${version.policy.common}</version>
            </dependency>
            <dependency>
                <groupId>org.onap.policy.common</groupId>
                <artifactId>common-parameters</artifactId>
                <version>${version.policy.common}</version>
            </dependency>
            <dependency>
                <groupId>org.onap.policy.common</groupId>
                <artifactId>policy-endpoints</artifactId>
                <version>${version.policy.common}</version>
            </dependency>
            <dependency>
                <groupId>org.jgroups</groupId>
                <artifactId>jgroups</artifactId>
                <version>${version.jgroups}</version>
            </dependency>
            <dependency>
                <groupId>com.github.ben-manes.caffeine</groupId>
                <artifactId>caffeine</artifactId>
                <version>${version.caffeine}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <profiles>
        <profile>
            <!--This profile is used to store Eclipse m2e settings only. It has no
                influence on the Maven build itself. -->
            <id>only-eclipse</id>
            <activation>
                <property>
                    <name>m2e.version</name>
                </property>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.eclipse.m2e</groupId>
                            <artifactId>lifecycle-mapping</artifactId>
                            <version>1.0.0</version>
                            <configuration>
                                <lifecycleMappingMetadata>
                                    <pluginExecutions>
                                        <pluginExecution>
                                            <pluginExecutionFilter>
                                                <groupId>org.codehaus.mojo</groupId>
                                                <artifactId>exec-maven-plugin</artifactId>
                                                <versionRange>[1.6.0,)</versionRange>
                                                <goals>
                                                    <goal>java</goal>
                                                    <goal>exec</goal>
                                                </goals>
                                            </pluginExecutionFilter>
                                            <action>
                                                <execute/>
                                            </action>
                                        </pluginExecution>
                                        <pluginExecution>
                                            <pluginExecutionFilter>
                                                <groupId>org.commonjava.maven.plugins</groupId>
                                                <artifactId>directory-maven-plugin</artifactId>
                                                <versionRange>0.2</versionRange>
                                                <goals>
                                                    <goal>directory-of</goal>
                                                </goals>
                                            </pluginExecutionFilter>
                                            <action>
                                                <execute/>
                                            </action>
                                        </pluginExecution>
                                        <pluginExecution>
                                            <pluginExecutionFilter>
                                                <groupId>org.apache.maven.plugins</groupId>
                                                <artifactId>maven-dependency-plugin</artifactId>
                                                <versionRange>[2.0,)</versionRange>
                                                <goals>
                                                    <goal>unpack</goal>
                                                    <goal>unpack-dependencies</goal>
                                                </goals>
                                            </pluginExecutionFilter>
                                            <action>
                                                <execute/>
                                            </action>
                                        </pluginExecution>
                                        <pluginExecution>
                                            <pluginExecutionFilter>
                                                <groupId>org.apache.maven.plugins</groupId>
                                                <artifactId>maven-antrun-plugin</artifactId>
                                                <versionRange>[1.0,)</versionRange>
                                                <goals>
                                                    <goal>run</goal>
                                                </goals>
                                            </pluginExecutionFilter>
                                            <action>
                                                <ignore/>
                                            </action>
                                        </pluginExecution>
                                    </pluginExecutions>
                                </lifecycleMappingMetadata>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
    </profiles>

    <modules>
        <module>model</module>
        <module>context</module>
        <module>core</module>
        <module>auth</module>
        <module>services</module>
        <module>plugins</module>
        <module>examples</module>
        <module>testsuites</module>
        <module>tools</module>
        <module>packages</module>
    </modules>
</project>
