<?xml version="1.0" encoding="UTF-8"?>
<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>com.mulesoft.connectivity</groupId>
        <artifactId>interpreted-connectivity-link-weave</artifactId>
        <version>1.6.0-212.develop</version>
    </parent>

    <artifactId>connectivity-dc-maven-plugin</artifactId>
    <packaging>maven-plugin</packaging>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <pathToTop>..</pathToTop>

        <maven.invoker.plugin.version>3.9.1</maven.invoker.plugin.version>
        <maven.plugin.testing.harness.version>4.0.0-alpha-2</maven.plugin.testing.harness.version>
        <maven.plugin.annotations.version>3.15.1</maven.plugin.annotations.version>
        <mavenProject.version>2.2.1</mavenProject.version>
        <minMavenVersion>3.3.9</minMavenVersion>
        <jackson-databind.version>2.20.0</jackson-databind.version>
        <mockito.version>5.20.0</mockito.version>
        <junit.jupiter.version>6.0.0</junit.jupiter.version>

        <!-- Enable recording of coverage during execution of maven-invoker-plugin -->
        <jacoco.propertyName>invoker.mavenOpts</jacoco.propertyName>
        <jacoco.agent.version>0.8.13</jacoco.agent.version>

        <skipITs>false</skipITs>
    </properties>

    <prerequisites>
        <maven>${minMavenVersion}</maven>
    </prerequisites>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.mule.weave</groupId>
                <artifactId>runtime</artifactId>
                <version>${dc.data.weave.version}</version>
            </dependency>

            <dependency>
                <groupId>org.mule.weave</groupId>
                <artifactId>core</artifactId>
                <version>${dc.data.weave.version}</version>
            </dependency>

            <dependency>
                <groupId>org.mule.weave</groupId>
                <artifactId>parser</artifactId>
                <version>${dc.data.weave.version}</version>
            </dependency>

            <dependency>
                <groupId>org.mule.weave</groupId>
                <artifactId>http-module</artifactId>
                <version>${dc.data.weave.http.module.version}</version>
            </dependency>

            <dependency>
                <groupId>org.mule.weave</groupId>
                <artifactId>http-netty-module</artifactId>
                <version>${dc.data.weave.http.netty.module.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>com.mulesoft.connectivity</groupId>
            <artifactId>connectivity-maven-plugin</artifactId>
            <version>${project.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>runtime</artifactId>
                    <groupId>org.mule.weave</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.mule.weave</groupId>
            <artifactId>runtime</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mule.weave</groupId>
            <artifactId>core</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mule.weave</groupId>
            <artifactId>parser</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mule.weave</groupId>
            <artifactId>http-module</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mule.weave</groupId>
            <artifactId>http-netty-module</artifactId>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson-databind.version}</version>
        </dependency>

        <dependency>
            <groupId>com.mulesoft.connectivity</groupId>
            <artifactId>connectivity-dc-extension</artifactId>
            <version>${project.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-plugin-api</artifactId>
            <version>${minMavenVersion}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-core</artifactId>
            <version>${minMavenVersion}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-artifact</artifactId>
            <version>${minMavenVersion}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.maven.plugin-tools</groupId>
            <artifactId>maven-plugin-annotations</artifactId>
            <version>${maven.plugin.annotations.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>provided</scope>
        </dependency>

        <!--   Test dependencies     -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>${junit.jupiter.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit.jupiter.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>${mockito.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.mulesoft.connectivity</groupId>
            <artifactId>reference-connector-connectivity-model</artifactId>
            <version>${project.version}</version>
            <classifier>dw-library</classifier>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>net.revelc.code</groupId>
                <artifactId>impsort-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>net.revelc.code.formatter</groupId>
                <artifactId>formatter-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
            </plugin>

            <!-- Maven invoker plugin is used for running integration tests
                 * Sources are in the src/it folder.
             -->
            <plugin>
                <artifactId>maven-invoker-plugin</artifactId>
                <version>${maven.invoker.plugin.version}</version>
                <configuration>
                    <streamLogsOnFailures>true</streamLogsOnFailures>
                    <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
                    <settingsFile>src/it/settings.xml</settingsFile>
                    <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
                    <skipInstallation>${skipITs}</skipInstallation>
                    <skipInvocation>${skipITs}</skipInvocation>
                    <postBuildHookScript>validate</postBuildHookScript>
                    <properties>
                        <data.weave.maven.plugin.version>${dc.data.weave.maven.plugin.version}
                        </data.weave.maven.plugin.version>
                        <data.weave.testing.framework.version>${dc.data.weave.testing.framework.version}
                        </data.weave.testing.framework.version>
                        <linkweave.version>${project.version}</linkweave.version>
                        <maven.resources.plugin.version>${maven.resources.plugin.version}
                        </maven.resources.plugin.version>
                        <skipTests>true</skipTests>
                    </properties>
                    <extraArtifacts>
                        <extraArtifact>org.jacoco:org.jacoco.agent:${jacoco.agent.version}:jar:runtime</extraArtifact>
                    </extraArtifacts>
                </configuration>
                <executions>
                    <execution>
                        <id>integration-test</id>
                        <phase>install</phase>
                        <goals>
                            <goal>install</goal>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>
