<!--
  ============LICENSE_START=======================================================
   Copyright (C) 2018 Ericsson. 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.

  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.apex-pdp.testsuites.integration</groupId>
        <artifactId>integration</artifactId>
        <version>2.0.0-SNAPSHOT</version>
    </parent>
    <artifactId>integration-common</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.onap.policy.apex-pdp.model</groupId>
            <artifactId>context-model</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.apex-pdp.model</groupId>
            <artifactId>event-model</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.apex-pdp.model</groupId>
            <artifactId>policy-model</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.onap.policy.apex-pdp.core</groupId>
            <artifactId>core-engine</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>3.10.0</version>
                <configuration>
                    <excludes>
                        <exclude>**/test/common/**/*.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <configuration>
                    <goalPrefix>jacoco</goalPrefix>
                    <excludes>
                        <exclude>**/test/common/**/*..class</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>generate-models</id>
                        <phase>process-classes</phase>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                        <configuration>
                            <executable>java</executable>
                            <classpathScope>test</classpathScope>
                            <arguments>
                                <argument>-classpath</argument>
                                <!-- automatically creates the classpath using all project dependencies, also adding the project build directory -->
                                <classpath />
                                <argument>org.onap.policy.apex.test.common.model.SampleDomainModelSaver</argument>
                                <argument>${project.build.directory}/classes/examples/models/SampleDomain</argument>
                            </arguments>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>apexSite</id>
            <activation>
                <property>
                    <name>apexSite</name>
                </property>
            </activation>
            <distributionManagement>
                <site>
                    <id>${project.artifactId}-site</id>
                    <url>${apex.adsite.prefix}/modules/testsuites/${project.parent.artifactId}/${project.artifactId}/</url>
                </site>
            </distributionManagement>
        </profile>
    </profiles>
</project>
