<?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>org.mule</groupId>
    <artifactId>mule-runtime-bom-parent</artifactId>
    <version>4.8.12</version>
    <packaging>pom</packaging>

    <properties>
        <antlrVersion>3.5.3</antlrVersion>
        <antVersion>1.10.14</antVersion>
        <asm.version>9.7</asm.version>
        <aspectjVersion>1.9.22.1</aspectjVersion>
        <apacheHttpClientVersion>4.5.13</apacheHttpClientVersion>
        <byteBuddyVersion>1.14.18</byteBuddyVersion>
        <c3p0Version>0.10.1</c3p0Version>
        <caffeineVersion>2.9.3</caffeineVersion>
        <checkerQualVersion>3.46.0</checkerQualVersion>
        <commonsBeanUtilsVersion>1.11.0</commonsBeanUtilsVersion>
        <commonsCliVersion>1.8.0</commonsCliVersion>
        <commonsCodecVersion>1.17.1</commonsCodecVersion>
        <commonsCollectionsVersion>4.4</commonsCollectionsVersion>
        <commonsCollections3Version>3.2.2</commonsCollections3Version>
        <commonsCompressVersion>1.26.2</commonsCompressVersion>
        <commonsDbcpVersion>1.4</commonsDbcpVersion>
        <commonsDbUtilsVersion>1.8.1</commonsDbUtilsVersion>
        <commonsHttpClientVersion>3.1-14-MULE-001</commonsHttpClientVersion>
        <commonsIoVersion>2.16.1</commonsIoVersion>
        <commonsTextVersion>1.12.0</commonsTextVersion>
        <commonsLangVersion>3.18.0</commonsLangVersion>
        <commonsNetVersion>3.11.1</commonsNetVersion>
        <commonsPoolVersion>1.6</commonsPoolVersion>
        <commonsPool2Version>2.12.0</commonsPool2Version>
        <commonsMath3Version>3.6.1</commonsMath3Version>
        <!-- not to be confused with LMAX Disruptor (used by log4j2), this one provides queue impls used by Vibur -->
        <coversantmediaDisruptorVersion>1.2.10</coversantmediaDisruptorVersion>
        <cxfVersion>3.5.9</cxfVersion>
        <disruptorVersion>3.4.4</disruptorVersion>
        <dom4jVersion>2.1.4</dom4jVersion>
        <eaioUuidVersion>3.4.2-MULE-001</eaioUuidVersion>
        <fastUtilVersion>8.5.14</fastUtilVersion>
        <jsonSchemaVersion>1.14.3</jsonSchemaVersion>
        <handyUriTemplatesVersion>2.1.8</handyUriTemplatesVersion>
        <re2jVersion>1.7</re2jVersion>
        <gsonVersion>2.12.1</gsonVersion>
        <guavaVersion>33.2.1-jre</guavaVersion>
        <guavaFailureaccessVersion>1.0.2</guavaFailureaccessVersion>
        <guavaJ2objcVersion>3.0.0</guavaJ2objcVersion>
        <guavaListenablefutureVersion>9999.0-empty-to-avoid-conflict-with-guava</guavaListenablefutureVersion>
        <errorProneAnnotationsVersion>2.29.2</errorProneAnnotationsVersion>
        <failsafeVersion>2.4.4</failsafeVersion>

        <!-- It must be verified that the com.fasterxml.jackson.core:jackson-databind version is compatible
        with the com.github.java-json-tools:json-schema-validator version -->
        <jackson2Version>2.17.2</jackson2Version>

        <!-- Metrics/Tracing dependencies -->
        <opentelemetryVersion>1.40.0</opentelemetryVersion>
        <opentelemetryAlphaVersion>${opentelemetryVersion}-alpha</opentelemetryAlphaVersion>
        <okHttpVersion>4.12.0</okHttpVersion>
        <okioVersion>3.9.0</okioVersion>
        <jetbrainsAnnotationsVersion>24.1.0</jetbrainsAnnotationsVersion>
        <jetbrainsKotlinVersion>1.9.25</jetbrainsKotlinVersion>
        <ioGrpcVersion>1.66.0</ioGrpcVersion>
        <perfmarkApiVersion>0.27.0</perfmarkApiVersion>
        
        <!-- Java EE dependencies -->
        <jakarta.activation.version>1.2.2</jakarta.activation.version>
        <jakarta.annotation.version>1.3.5</jakarta.annotation.version>
        <jakarta.inject.version>1.0.5</jakarta.inject.version>
        <jakarta.jws.version>1.1.1</jakarta.jws.version>
        <jakarta.mail.version>1.6.7</jakarta.mail.version>
        <java.mail.version>1.6.2</java.mail.version>
        <jakarta.xml.bind.api.version>2.3.3</jakarta.xml.bind.api.version>
        <jakarta.jaxws.version>2.3.3</jakarta.jaxws.version>
        <jakarta.jms.version>2.0.3</jakarta.jms.version>
        <jakarta.transaction.version>1.3.3</jakarta.transaction.version>
        <jakarta.resource.api.version>1.7.4</jakarta.resource.api.version>
        <java.xml.bind.version>2.3.8</java.xml.bind.version>
        <com.sun.istack.version>3.0.12</com.sun.istack.version>
        <jakarta.xml.soap.version>1.4.2</jakarta.xml.soap.version>
        <geronimoSpecsJ2eeVersion>2.0.0</geronimoSpecsJ2eeVersion>
        <geronimoSpecsJmsVersion>1.1.1</geronimoSpecsJmsVersion>
        <geronimoSpecsServletApiVersion>1.0</geronimoSpecsServletApiVersion>
        <graalVersion>22.3.5</graalVersion>
        <javax.validation.api.version>1.1.0.Final</javax.validation.api.version>

        <jdomVersion>2.0.2</jdomVersion>
        <jgraphtVersion>1.3.1</jgraphtVersion>
        <jheapsVersion>0.14</jheapsVersion>
        <jodaTimeVersion>2.12.7</jodaTimeVersion>
        <jcommanderVersion>1.82</jcommanderVersion>
        <jsonVersion>20240303</jsonVersion>
        <jsoupVersion>1.18.1</jsoupVersion>
        <log4jVersion>2.24.1</log4jVersion>

        <mavenVersion>3.9.8</mavenVersion>
        <mavenResolverVersion>1.9.18</mavenResolverVersion>
        <mavenResolverProviderVersion>3.9.8</mavenResolverProviderVersion>
        <mavenInvokerVersion>3.3.0</mavenInvokerVersion>
        <maven.shared.utils.version>3.4.2</maven.shared.utils.version>
        <maven.plugin.annotations.version>3.13.1</maven.plugin.annotations.version>
        <maven.plugin.plugin.version>3.13.1</maven.plugin.plugin.version>
        <maven.plugin.api.version>3.9.8</maven.plugin.api.version>
        <maven.plugin.annotations.version>3.13.1</maven.plugin.annotations.version>
        <plexus.archiver.version>4.10.0</plexus.archiver.version>
        <plexusUtilsVersion>4.0.1</plexusUtilsVersion>
        <plexusXmlVersion>3.0.1</plexusXmlVersion>
        <plexusComponentAnnotationsVersion>1.5.5</plexusComponentAnnotationsVersion>
        <plexusInterpolationVersion>1.27</plexusInterpolationVersion>
        <plexusSecurityVersion>2.0</plexusSecurityVersion>
        <wagonVersion>3.5.3</wagonVersion>
        <mojoExecutorVersion>2.3.0</mojoExecutorVersion>
        <sisuVersion>0.3.5</sisuVersion>
        <eclipse.sisu.plexus.version>${sisuVersion}</eclipse.sisu.plexus.version>

        <mchangeCommonsVersion>0.3.1</mchangeCommonsVersion>
        <projectReactorVersion>3.6.8</projectReactorVersion>
        <projectReactorExtraVersion>3.5.1</projectReactorExtraVersion>
        <quartzVersion>2.3.2</quartzVersion>

        <!-- When raml-parser-2 is updated, it must be verified that the version of its dependency:
        com.github.java-json-tools:json-schema-validator is compatible with the current com.fasterxml.jackson.core:jackson-databind version -->
        <raml.parser.2.version>1.0.44-17</raml.parser.2.version>

        <reflectionsVersion>0.10.2</reflectionsVersion>
        <reactiveStreamsVersion>1.0.4</reactiveStreamsVersion>
        <rhinoVersion>1.7.15</rhinoVersion>
        <saxonVersion>12.5</saxonVersion>
        <semver4jVersion>3.1.0</semver4jVersion>
        <slf4jVersion>2.0.14</slf4jVersion>
        <snakeYamlVersion>2.2</snakeYamlVersion>
        <springVersion>5.3.39</springVersion>
        <staxUtilsVersion>20080702</staxUtilsVersion>
        <typesafeConfigVersion>1.4.3</typesafeConfigVersion>
        <unirestVersion>1.4.9</unirestVersion>
        <woodstoxVersion>4.4.1</woodstoxVersion>
        <wrapperVersion>3.2.3</wrapperVersion>
        <togglzVersion>3.2.1</togglzVersion>
        <viburVersion>25.0</viburVersion>
        <!-- If this version is upgraded, the repackaged jar must be updated/released as well -->
        <xerces2VersionBase>2.12.2</xerces2VersionBase>
        <xerces2Version>${xerces2VersionBase}-MULE-001</xerces2Version>
        <xmlApisVersion>1.4.01</xmlApisVersion>
        <xmlbeansVersion>3.1.0</xmlbeansVersion>

        <!-- EE Dependencies -->
        <apacheHttpFluentVersion>4.5.14</apacheHttpFluentVersion>
        <apacheHttpClientVersion>4.5.14</apacheHttpClientVersion>
        <apacheHttpCoreVersion>4.4.16</apacheHttpCoreVersion>
        <bitronixTMVersion>2.1.20</bitronixTMVersion>
        <!-- When updating Hazelcast review if this list has changed and update JpmsUtils: -->
        <!-- https://docs.hazelcast.com/hazelcast/5.3/getting-started/install-hazelcast#using-modular-java -->
        <hazelcastVersion>5.3.8</hazelcastVersion>
        <kryo.version>4.0.3</kryo.version>
        <kryo-serializers.version>0.45</kryo-serializers.version>
        <licmVersion>2.1.11</licmVersion>
        <minlog.version>1.3.1</minlog.version>
        <objenesis.version>3.4</objenesis.version>
        <truelicenseVersion>1.31</truelicenseVersion>
        <agw.version>4.8.12</agw.version>
        <mule.agent.version>2.7.11</mule.agent.version>
        <mule.artifact.patches.bom.version>1.0.26</mule.artifact.patches.bom.version>

        <!-- Mule Snapshot Dependencies -->
        <muleSdkApiVersion>0.13.0</muleSdkApiVersion>
        <muleSdkCompatibilityApiVersion>0.13.0</muleSdkCompatibilityApiVersion>
        <muleDslApiVersion>1.8.12</muleDslApiVersion>
        <muleAstVersion>1.4.12</muleAstVersion>
        <mulePropertiesApiVersion>1.4.12</mulePropertiesApiVersion>
        <muleExtensionsApiVersion>1.8.12</muleExtensionsApiVersion>
        <muleHttpPolicyApiVersion>1.8.12</muleHttpPolicyApiVersion>
        <muleMavenClientApi>2.3.12</muleMavenClientApi>
        <muleMavenClientImpl>2.3.12</muleMavenClientImpl>
        <muleMavenParser>2.3.12</muleMavenParser>
        <muleMavenClientTest>2.3.12</muleMavenClientTest>
        <mulePolicyApiVersion>1.8.12</mulePolicyApiVersion>
        <muleApiVersion>1.8.12</muleApiVersion>
        <muleProfilingApiVersion>1.4.12</muleProfilingApiVersion>
        <muleMetadataModelVersion>1.8.12</muleMetadataModelVersion>
        <mule.classloader.model.version>4.2.0</mule.classloader.model.version>
        <muleEncryptionVersion>1.6.12</muleEncryptionVersion>
        <muleOAuthClientVersion>2.3.12</muleOAuthClientVersion>

        <!--Services-->
        <muleSchedulerServiceVersion>1.8.12</muleSchedulerServiceVersion>
        <muleHttpServiceVersion>1.10.12</muleHttpServiceVersion>
        <muleOAuthServiceVersion>2.5.12</muleOAuthServiceVersion>
        <muleSoapServiceVersion>1.8.6</muleSoapServiceVersion>
        <weaveVersion>2.8.4</weaveVersion>

        <!-- Maven Plugins used in the mule-runtime-bom repo -->
        <maven.clean.plugin.version>3.4.0</maven.clean.plugin.version>
        <maven.install.plugin.version>3.1.2</maven.install.plugin.version>
        <maven.deploy.plugin.version>3.1.2</maven.deploy.plugin.version>
        <maven.site.plugin.version>3.12.1</maven.site.plugin.version>
        <maven.source.plugin.version>3.3.1</maven.source.plugin.version>
        <maven.javadoc.plugin.version>3.8.0</maven.javadoc.plugin.version>
        <maven.enforcer.plugin.version>3.5.0</maven.enforcer.plugin.version>
        <maven.site.plugin.version>3.12.1</maven.site.plugin.version>
    </properties>

    <modules>
        <module>mule-mulesoft-runtime-bom</module>
        <module>mule-mulesoft-ee-runtime-bom</module>
        <module>mule-javaee-runtime-bom</module>
        <module>mule-maven-runtime-bom</module>
        <module>mule-runtime-bom</module>
        <module>mule-ee-runtime-bom</module>
        <module>mule-plugin-mgmt-parent-pom</module>
    </modules>

    <distributionManagement>
        <repository>
            <id>mule-releases</id>
            <name>Mule Release Repository</name>
            <url>https://repository-master.mulesoft.org/nexus/content/repositories/releases</url>
        </repository>
        <snapshotRepository>
            <id>mule-snapshots</id>
            <name>Mule Snapshot Repository</name>
            <url>https://repository-master.mulesoft.org/nexus/content/repositories/snapshots</url>
            <uniqueVersion>false</uniqueVersion>
        </snapshotRepository>
    </distributionManagement>

    <repositories>
        <repository>
            <id>mulesoft-snapshots</id>
            <url>https://repository-master.mulesoft.org/nexus/content/repositories/snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>daily</updatePolicy>
                <checksumPolicy>warn</checksumPolicy>
            </snapshots>
        </repository>
        <repository>
            <id>mulesoft-releases</id>
            <url>https://repository-master.mulesoft.org/nexus/content/repositories/releases</url>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>${maven.clean.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>${maven.install.plugin.version}</version>
                </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-site-plugin</artifactId>
                    <version>${maven.site.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-javadoc-plugin</artifactId>
                    <version>${maven.javadoc.plugin.version}</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <profiles>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <!-- The enforcer plugin execution is intended to run the rules in this mule-runtime-bom repo -->
                        <!-- The enforcer configuration intended to be inherited in other repos is present in the 'mule-plugin-mgmt-parent-pom' module -->
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-enforcer-plugin</artifactId>
                        <version>${maven.enforcer.plugin.version}</version>
                        <executions>
                            <execution>
                                <id>enforce-no-snapshots-in-deps</id>
                                <goals>
                                    <goal>enforce</goal>
                                </goals>
                                <configuration>
                                    <rules>
                                        <requireReleaseDeps>
                                            <message>No Snapshots Allowed in Deps!</message>
                                        </requireReleaseDeps>
                                        <requireReleaseVersion>
                                            <message>No Snapshots Allowed in Project Version!</message>
                                        </requireReleaseVersion>
                                        <requirePluginVersions>
                                            <message>Best Practice is to always define plugin versions!</message>
                                        </requirePluginVersions>
                                    </rules>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>
