<?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>

    <groupId>com.mulesoft.tools</groupId>
    <version>1.2.1-SNAPSHOT</version>
    <artifactId>mule-migration-tool-target-modules</artifactId>
    <name>Mule Migration Assistant Library - Target Modules dependencies</name>
    <packaging>jar</packaging>
    <description>Provide a dependency management of modules to use in behavior tests (i.e.: Compatibility module integration tests)</description>

    <properties>
        <formatterConfigPath>../formatter.xml</formatterConfigPath>
        <licensePath>../LICENSE_HEADER.txt</licensePath>
        <!-- MMA 483 -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>

        <!-- Target versions for migrated components -->
        <mule.http.connector.version>1.6.0</mule.http.connector.version>
        <mule.sockets.connector.version>1.2.2</mule.sockets.connector.version>
        <mule.file.connector.version>1.3.4</mule.file.connector.version>
        <mule.jms.connector.version>1.8.2</mule.jms.connector.version>
        <mule.vm.connector.version>2.0.0</mule.vm.connector.version>
        <mule.amqp.connector.version>1.7.3</mule.amqp.connector.version>
        <mule.db.connector.version>1.12.1</mule.db.connector.version>
        <mule.wsc.connector.version>1.6.9</mule.wsc.connector.version>
        <mule.email.connector.version>1.5.2</mule.email.connector.version>
        <mule.ftp.connector.version>1.5.5</mule.ftp.connector.version>
        <mule.sftp.connector.version>1.4.1</mule.sftp.connector.version>
        <mule.objectstore.connector.version>1.2.1</mule.objectstore.connector.version>
        <mule.salesforce.connector.version>10.14.0</mule.salesforce.connector.version>
        <mule.aggregators.module.version>1.0.5</mule.aggregators.module.version>

        <mule.validation.module.version>1.4.5</mule.validation.module.version>
        <mule.secureProps.module.version>1.2.3</mule.secureProps.module.version>
        <mule.scripting.module.version>2.0.0</mule.scripting.module.version>
        <mule.spring.module.version>1.3.6</mule.spring.module.version>
        <mule.compression.module.version>2.1.2</mule.compression.module.version>
        <mule.apikit.module.version>1.5.10</mule.apikit.module.version>
        <mule.soapkit.module.version>1.2.11</mule.soapkit.module.version>
        <mule.json.module.version>2.1.5</mule.json.module.version>
        <mule.java.module.version>1.2.9</mule.java.module.version>
        <mule.cryptography.module.version>1.3.9</mule.cryptography.module.version>
        <mule.oauth2-provider.module.version>1.0.8</mule.oauth2-provider.module.version>
        <mule.compatibility.module.version>1.4.0</mule.compatibility.module.version>

        <munit.version>2.3.8</munit.version>

        <!-- api gw policies -->
        <mule.client-id-enforcement.extension.version>1.1.4</mule.client-id-enforcement.extension.version>
        <mule.federation.extension.version>1.3.0</mule.federation.extension.version>
        <mule.ip-filter.extension.version>2.0.0</mule.ip-filter.extension.version>
        <mule.http-policy-transform.extension.version>3.0.0</mule.http-policy-transform.extension.version>
        <mule.threat-protection.extension.version>1.1.2</mule.threat-protection.extension.version>
        <mule.throttling.extension.version>2.0.3</mule.throttling.extension.version>
        <mule.rest-validator.extension.version>2.2.1</mule.rest-validator.extension.version>
        <mule.http-proxy.extension.version>1.1.3</mule.http-proxy.extension.version>
        <mule.wsdl-functions.extension.version>1.1.3</mule.wsdl-functions.extension.version>
        
        <!-- maven plugin versions -->
        <maven.jar.plugin.version>3.2.0</maven.jar.plugin.version>
        <maven.compiler.plugin.version>3.1</maven.compiler.plugin.version>
        <maven.deploy.plugin.version>2.8.2</maven.deploy.plugin.version>
        <maven.javadoc.plugin.version>2.10.4</maven.javadoc.plugin.version>
        <maven.source.plugin.version>3.2.1</maven.source.plugin.version>
        <maven.site.plugin.version>3.3</maven.site.plugin.version>
        <maven.release.plugin.version>2.5.3</maven.release.plugin.version>
        <maven.enforcer.plugin.version>3.0.0</maven.enforcer.plugin.version>
        <mule.maven.plugin.version>3.2.1</mule.maven.plugin.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.mule.connectors</groupId>
                <artifactId>mule-http-connector</artifactId>
                <version>${mule.http.connector.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.connectors</groupId>
                <artifactId>mule-sockets-connector</artifactId>
                <version>${mule.sockets.connector.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.connectors</groupId>
                <artifactId>mule-file-connector</artifactId>
                <version>${mule.file.connector.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>com.mulesoft.connectors</groupId>
                <artifactId>mule-amqp-connector</artifactId>
                <version>${mule.amqp.connector.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.connectors</groupId>
                <artifactId>mule-jms-connector</artifactId>
                <version>${mule.jms.connector.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.connectors</groupId>
                <artifactId>mule-vm-connector</artifactId>
                <version>${mule.vm.connector.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.connectors</groupId>
                <artifactId>mule-db-connector</artifactId>
                <version>${mule.db.connector.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.connectors</groupId>
                <artifactId>mule-wsc-connector</artifactId>
                <version>${mule.wsc.connector.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.connectors</groupId>
                <artifactId>mule-email-connector</artifactId>
                <version>${mule.email.connector.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.connectors</groupId>
                <artifactId>mule-ftp-connector</artifactId>
                <version>${mule.ftp.connector.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.connectors</groupId>
                <artifactId>mule-sftp-connector</artifactId>
                <version>${mule.sftp.connector.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.connectors</groupId>
                <artifactId>mule-objectstore-connector</artifactId>
                <version>${mule.objectstore.connector.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>com.mulesoft.connectors</groupId>
                <artifactId>mule-salesforce-connector</artifactId>
                <version>${mule.salesforce.connector.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.modules</groupId>
                <artifactId>mule-aggregators-module</artifactId>
                <version>${mule.aggregators.module.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.modules</groupId>
                <artifactId>mule-validation-module</artifactId>
                <version>${mule.validation.module.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.modules</groupId>
                <artifactId>mule-compression-module</artifactId>
                <version>${mule.compression.module.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.modules</groupId>
                <artifactId>mule-scripting-module</artifactId>
                <version>${mule.scripting.module.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.modules</groupId>
                <artifactId>mule-spring-module</artifactId>
                <version>${mule.spring.module.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>com.mulesoft.modules</groupId>
                <artifactId>mule-secure-configuration-property-module</artifactId>
                <version>${mule.secureProps.module.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.modules</groupId>
                <artifactId>mule-apikit-module</artifactId>
                <version>${mule.apikit.module.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.modules</groupId>
                <artifactId>mule-soapkit-module</artifactId>
                <version>${mule.soapkit.module.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>org.mule.modules</groupId>
                <artifactId>mule-json-module</artifactId>
                <version>${mule.json.module.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>com.mulesoft.modules</groupId>
                <artifactId>mule-cryptography-module</artifactId>
                <version>${mule.cryptography.module.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>com.mulesoft.mule.modules</groupId>
                <artifactId>mule-oauth2-provider-module</artifactId>
                <version>${mule.oauth2-provider.module.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>com.mulesoft.mule.modules</groupId>
                <artifactId>mule-compatibility-module</artifactId>
                <version>${mule.compatibility.module.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>

            <dependency>
                <groupId>org.mule.modules</groupId>
                <artifactId>mule-spring-test-plugin</artifactId>
                <version>${mule.spring.module.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>

            <dependency>
                <groupId>com.mulesoft.munit.tools</groupId>
                <artifactId>munit-maven-plugin</artifactId>
                <version>${munit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.mulesoft.munit</groupId>
                <artifactId>munit-runner</artifactId>
                <version>${munit.version}</version>
                <scope>test</scope>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>com.mulesoft.munit</groupId>
                <artifactId>munit-tools</artifactId>
                <version>${munit.version}</version>
                <scope>test</scope>
                <classifier>mule-plugin</classifier>
            </dependency>

            <dependency>
                <groupId>com.mulesoft.anypoint</groupId>
                <artifactId>mule-client-id-enforcement-extension</artifactId>
                <version>${mule.client-id-enforcement.extension.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>com.mulesoft.anypoint</groupId>
                <artifactId>mule-federation-extension</artifactId>
                <version>${mule.federation.extension.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>com.mulesoft.anypoint</groupId>
                <artifactId>mule-ip-filter-extension</artifactId>
                <version>${mule.ip-filter.extension.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>com.mulesoft.anypoint</groupId>
                <artifactId>mule-http-policy-transform-extension</artifactId>
                <version>${mule.http-policy-transform.extension.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>com.mulesoft.anypoint</groupId>
                <artifactId>mule-json-threat-protection-extension</artifactId>
                <version>${mule.threat-protection.extension.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>com.mulesoft.anypoint</groupId>
                <artifactId>mule-throttling-extension</artifactId>
                <version>${mule.throttling.extension.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>com.mulesoft.anypoint</groupId>
                <artifactId>mule-rest-validator-extension</artifactId>
                <version>${mule.rest-validator.extension.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>com.mulesoft.anypoint</groupId>
                <artifactId>mule-http-proxy-extension</artifactId>
                <version>${mule.http-proxy.extension.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>
            <dependency>
                <groupId>com.mulesoft.anypoint</groupId>
                <artifactId>mule-wsdl-functions-extension</artifactId>
                <version>${mule.wsdl-functions.extension.version}</version>
                <classifier>mule-plugin</classifier>
            </dependency>

            <dependency>
                <groupId>org.mule.tools.maven</groupId>
                <artifactId>mule-maven-plugin</artifactId>
                <version>${mule.maven.plugin.version}</version>
            </dependency>
        </dependencies>    
    </dependencyManagement>

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>${maven.enforcer.plugin.version}</version>
                    <executions>
                        <execution>
                            <id>default-cli</id>
                            <goals>
                                <goal>enforce</goal>
                            </goals>
                            <configuration>
                                <rules>
                                    <banDuplicatePomDependencyVersions/>
                                    <requirePluginVersions>
                                        <message>Best Practice is to always define plugin versions!</message>
                                        <banLatest>false</banLatest>
                                        <banRelease>false</banRelease>
                                        <banSnapshots>false</banSnapshots>
                                        <banTimestamps>false</banTimestamps>
                                        <phases>clean,deploy,site</phases>
                                        <unCheckedPluginList>
                                            org.apache.maven.plugins:maven-clean-plugin,org.apache.maven.plugins:maven-install-plugin,org.apache.maven.plugins:maven-deploy-plugin,org.apache.maven.plugins:maven-compiler-plugin,org.apache.maven.plugins:maven-surefire-plugin,org.apache.maven.plugins:maven-jar-plugin,org.apache.maven.plugins:maven-resources-plugin
                                        </unCheckedPluginList>
                                    </requirePluginVersions>

                                </rules>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>${maven.deploy.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${maven.javadoc.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>${maven.source.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>${maven.site.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>${maven.jar.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>${maven.release.plugin.version}</version>
                </plugin>
            </plugins>
        </pluginManagement>      
    </build>

    <!-- Cannot put the root project as parent pom because it will bring its own dependency management, and that will mess up other 
        projects that use this module's dependency managemnt. -->
    <!-- So, we need to duplicate the distributionManagement here so this artifact can be published. -->
    <distributionManagement>
        <repository>
            <id>mule-releases</id>
            <name>MuleSoft Releases Repository</name>
            <url>https://repository-master.mulesoft.org/releases/</url>
        </repository>
        <snapshotRepository>
            <id>mule-snapshots</id>
            <name>MuleSoft Snapshots Repository</name>
            <url>https://repository-master.mulesoft.org/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
</project>
