<?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.9.8-rc1</version>
    <packaging>pom</packaging>

    <properties>
        <licenseYear>2024</licenseYear>

        <antlrVersion>3.5.3</antlrVersion>
        <antVersion>1.10.15</antVersion>
        <apfloatVersion>1.14.0</apfloatVersion>
        <asciidoctor.version>3.0.0</asciidoctor.version>
        <asm.version>9.7.1</asm.version>
        <aspectjVersion>1.9.22.1</aspectjVersion>
        <apacheHttpClientVersion>4.5.13</apacheHttpClientVersion>
        <byteBuddyVersion>1.15.10</byteBuddyVersion>
        <c3p0Version>0.10.1</c3p0Version>
        <caffeineVersion>3.1.8</caffeineVersion>
        <checkerQualVersion>3.48.3</checkerQualVersion>
        <commonsBeanUtilsVersion>1.11.0</commonsBeanUtilsVersion>
        <commonsCliVersion>1.9.0</commonsCliVersion>
        <commonsCodecVersion>1.17.1</commonsCodecVersion>
        <commonsCollectionsVersion>4.4</commonsCollectionsVersion>
        <commonsCollections3Version>3.2.2</commonsCollections3Version>
        <commonsCompressVersion>1.27.1</commonsCompressVersion>
        <commonsDbcpVersion>1.4</commonsDbcpVersion>
        <commonsDbUtilsVersion>1.8.1</commonsDbUtilsVersion>
        <commonsHttpClientVersion>3.1-14-MULE-001</commonsHttpClientVersion>
        <commonsIoVersion>2.18.0</commonsIoVersion>
        <commonsTextVersion>1.12.0</commonsTextVersion>
        <commonsLangVersion>3.17.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.21</coversantmediaDisruptorVersion>
        <derbyVersion>10.16.1.1</derbyVersion>
        <disruptorVersion>4.0.0</disruptorVersion>
        <dom4jVersion>2.1.4</dom4jVersion>
        <eaioUuidVersion>3.4.2-MULE-001</eaioUuidVersion>
        <fastUtilVersion>8.5.15</fastUtilVersion>
        <!-- this groovy version is to be used during the build process or for tests, not bundled in the distro -->
        <groovyVersion>4.0.24</groovyVersion>
        <icu4jVersion>76.1</icu4jVersion>
        <jsonSchemaVersion>1.14.3</jsonSchemaVersion>
        <h2Version>2.3.232</h2Version>
        <handyUriTemplatesVersion>2.1.8</handyUriTemplatesVersion>
        <re2jVersion>1.7</re2jVersion>
        <gsonVersion>2.12.1</gsonVersion>
        <guavaVersion>33.3.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.36.0</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.18.2</jackson2Version>

        <!-- Metrics/Tracing dependencies -->
        <opentelemetryVersion>1.44.1</opentelemetryVersion>
        <opentelemetryAlphaVersion>${opentelemetryVersion}-alpha</opentelemetryAlphaVersion>
        <okHttpVersion>4.12.0</okHttpVersion>
        <okioVersion>3.9.1</okioVersion>
        <jetbrainsAnnotationsVersion>26.0.1</jetbrainsAnnotationsVersion>
        <jetbrainsKotlinVersion>2.1.0</jetbrainsKotlinVersion>
        <ioGrpcVersion>1.68.2</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.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.9</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>24.1.1</graalVersion>
        <graalJsVersion>23.0.6</graalJsVersion>
        <javax.validation.api.version>1.1.0.Final</javax.validation.api.version>
        <servlet.spec.version>4.0.4</servlet.spec.version>

        <jcifs.version>2.1.10</jcifs.version>
        <jdomVersion>2.0.2</jdomVersion>
        <jgraphtVersion>1.5.2</jgraphtVersion>
        <jheapsVersion>0.14</jheapsVersion>
        <jodaTimeVersion>2.13.0</jodaTimeVersion>
        <jcommanderVersion>1.82</jcommanderVersion>
        <jsonVersion>20240303</jsonVersion>
        <jsoupVersion>1.18.3</jsoupVersion>
        <jruby.version>9.4.9.0</jruby.version>
        <log4jVersion>2.24.3</log4jVersion>

        <mavenVersion>3.9.9</mavenVersion>
        <mavenResolverVersion>1.9.18</mavenResolverVersion>
        <mavenResolverProviderVersion>3.9.9</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.15.1</maven.plugin.plugin.version>
        <maven.plugin.api.version>3.9.9</maven.plugin.api.version>
        <maven.plugin.annotations.version>3.15.1</maven.plugin.annotations.version>
        <plexus.archiver.version>4.10.0</plexus.archiver.version>
        <plexusUtilsVersion>4.0.2</plexusUtilsVersion>
        <plexusXmlVersion>3.0.1</plexusXmlVersion>
        <plexusComponentVersion>2.2.0</plexusComponentVersion>
        <plexusInterpolationVersion>1.27</plexusInterpolationVersion>
        <plexusSecurityVersion>2.0</plexusSecurityVersion>
        <wagonVersion>3.5.3</wagonVersion>
        <mojoExecutorVersion>2.4.0</mojoExecutorVersion>
        <sisuVersion>0.3.5</sisuVersion>
        <eclipse.sisu.plexus.version>${sisuVersion}</eclipse.sisu.plexus.version>

        <mchangeCommonsVersion>0.3.1</mchangeCommonsVersion>
        <micrometerVersion>1.14.1</micrometerVersion>
        <netty.version>4.1.119.Final</netty.version>
        <reactor.netty.version>1.2.0</reactor.netty.version>
        <projectReactorVersion>3.7.0</projectReactorVersion>
        <projectReactorExtraVersion>3.5.2</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.16</slf4jVersion>
        <snakeYamlVersion>2.3</snakeYamlVersion>
        <springVersion>6.2.0</springVersion>
        <typesafeConfigVersion>1.4.3</typesafeConfigVersion>
        <unirestVersion>1.4.9</unirestVersion>
        <woodstoxVersion>4.4.1</woodstoxVersion>
        <wrapperVersion>3.2.3</wrapperVersion>
        <togglzVersion>4.4.0</togglzVersion>
        <velocity.version>2.4.1</velocity.version>
        <velocity.tools.generic.version>3.1</velocity.tools.generic.version>
        <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>5.2.2</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.4/getting-started/install-hazelcast#using-modular-java -->
        <hazelcastVersion>5.2.5</hazelcastVersion>
        <kryo.version>4.0.3</kryo.version>
        <kryo-serializers.version>0.45</kryo-serializers.version>
        <licmVersion>2.1.12</licmVersion>
        <minlog.version>1.3.1</minlog.version>
        <objenesis.version>3.4</objenesis.version>
        <truelicenseVersion>1.31</truelicenseVersion>
        <agw.version>4.9.8-rc1</agw.version>
        <mule.agent.version>2.7.6-rc2</mule.agent.version>
        <mule.artifact.patches.bom.version>1.1.0-rc1</mule.artifact.patches.bom.version>

        <!-- Mule Snapshot Dependencies -->
        <muleSdkApiVersion>0.11.8-rc1</muleSdkApiVersion>
        <muleSdkCompatibilityApiVersion>0.11.8-rc1</muleSdkCompatibilityApiVersion>
        <muleDslApiVersion>1.9.9-rc1</muleDslApiVersion>
        <muleAstVersion>1.5.9-rc1</muleAstVersion>
        <mulePropertiesApiVersion>1.5.8-rc1</mulePropertiesApiVersion>
        <muleExtensionsApiVersion>1.9.9-rc1</muleExtensionsApiVersion>
        <muleHttpPolicyApiVersion>1.9.8-rc1</muleHttpPolicyApiVersion>
        <muleMavenClientApi>2.4.8-rc1</muleMavenClientApi>
        <muleMavenClientImpl>2.4.8-rc1</muleMavenClientImpl>
        <muleMavenParser>2.4.8-rc1</muleMavenParser>
        <muleMavenClientTest>2.4.8-rc1</muleMavenClientTest>
        <mulePolicyApiVersion>1.9.8-rc1</mulePolicyApiVersion>
        <muleApiVersion>1.9.8-rc1</muleApiVersion>
        <muleProfilingApiVersion>1.5.8-rc1</muleProfilingApiVersion>
        <muleMetadataModelVersion>1.9.8-rc1</muleMetadataModelVersion>
        <mule.classloader.model.version>4.2.0</mule.classloader.model.version>
        <muleEncryptionVersion>1.7.8-rc1</muleEncryptionVersion>
        <muleOAuthClientVersion>2.4.8-rc1</muleOAuthClientVersion>

        <!--Services-->
        <muleSchedulerServiceVersion>1.9.8-rc1</muleSchedulerServiceVersion>
        <muleHttpServiceVersion>1.11.8-rc1</muleHttpServiceVersion>
        <muleOAuthServiceVersion>2.6.8-rc1</muleOAuthServiceVersion>
        <weaveVersion>2.9.6-rc1</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.3</maven.install.plugin.version>
        <maven.deploy.plugin.version>3.1.3</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.11.1</maven.javadoc.plugin.version>
        <maven.enforcer.plugin.version>3.5.0</maven.enforcer.plugin.version>
        <maven.site.plugin.version>3.21.0</maven.site.plugin.version>

        <revapi-basic-features.version>0.13.0</revapi-basic-features.version>
        <revapi-java.version>0.28.1</revapi-java.version>
        <revapi-java-spi.version>0.25.0</revapi-java-spi.version>
        
        <!-- test dependencies -->
        <activeMqVersion>5.18.6</activeMqVersion>
        <amazon.redshift.version>1.2.10.1009</amazon.redshift.version>
        <springSecurityVersion>6.4.1</springSecurityVersion>
        <xaPoolVersion>1.5.0</xaPoolVersion>
    </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>
        <module>mule-test-bom</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-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>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>${maven.site.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>
