<?xml version="1.0" encoding="UTF-8"?>
<!--
  ============LICENSE_START=======================================================
  ONAP
  ================================================================================
  Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
  ================================================================================
  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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.onap.policy.drools-applications.controlloop.common</groupId>
        <artifactId>drools-applications-common</artifactId>
        <version>1.7.1-SNAPSHOT</version>
    </parent>

    <artifactId>controller-frankfurt</artifactId>
    <packaging>kjar</packaging>

    <name>${project.artifactId}</name>
    <description>Frankfurt Experimental Controller</description>

    <build>
        <plugins>
            <plugin>
                <groupId>org.kie</groupId>
                <artifactId>kie-maven-plugin</artifactId>
                <extensions>true</extensions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
            <artifactId>events</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
            <artifactId>aai</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
            <artifactId>appc</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
            <artifactId>appclcm</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
            <artifactId>cds</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
            <artifactId>sdc</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
            <artifactId>sdnc</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
            <artifactId>sdnr</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
            <artifactId>so</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
            <artifactId>vfc</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.drools-applications.controlloop.common</groupId>
            <artifactId>eventmanager</artifactId>
            <version>${project.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
            <artifactId>actorServiceProvider</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
            <artifactId>actor.aai</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
            <artifactId>actor.appc</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
            <artifactId>actor.appclcm</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
            <artifactId>actor.cds</artifactId>
            <version>${policy.models.version}</version>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
            <artifactId>actor.guard</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
            <artifactId>actor.sdnc</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
            <artifactId>actor.sdnr</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
            <artifactId>actor.so</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
            <artifactId>actor.vfc</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.models.policy-models-interactions</groupId>
            <artifactId>model-yaml</artifactId>
            <version>${policy.models.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.drools-pdp</groupId>
            <artifactId>policy-management</artifactId>
            <version>${version.policy.drools-pdp}</version>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.drools-applications.controlloop.common</groupId>
            <artifactId>rules-test</artifactId>
            <version>${project.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <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.kie</groupId>
                                                <artifactId>kie-maven-plugin</artifactId>
                                                <goals>
                                                    <goal>build</goal>
                                                </goals>
                                            </pluginExecutionFilter>
                                            <action>
                                                <ignore />
                                            </action>
                                        </pluginExecution>
                                    </pluginExecutions>
                                </lifecycleMappingMetadata>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
    </profiles>
</project>
