<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You 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.
  -->
<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.apache</groupId>
    <artifactId>apache</artifactId>
    <version>31</version>
    <relativePath />
  </parent>

  <groupId>org.apache.dubbo</groupId>
  <artifactId>dubbo-dependencies-bom</artifactId>
  <version>${revision}</version>
  <packaging>pom</packaging>

  <name>dubbo-dependencies-bom</name>
  <description>Dubbo dependencies BOM</description>
  <url>https://github.com/apache/dubbo</url>
  <inceptionYear>2011</inceptionYear>

  <organization>
    <name>The Apache Software Foundation</name>
    <url>http://www.apache.org/</url>
  </organization>
  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <developers>
    <developer>
      <id>dubbo.io</id>
      <name>The Dubbo Project Contributors</name>
      <email>dev-subscribe@dubbo.apache.org</email>
      <url>http://dubbo.apache.org/</url>
    </developer>
  </developers>
  <mailingLists>
    <mailingList>
      <name>Development List</name>
      <subscribe>dev-subscribe@dubbo.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@dubbo.apache.org</unsubscribe>
      <post>dev@dubbo.apache.org</post>
    </mailingList>
    <mailingList>
      <name>Commits List</name>
      <subscribe>commits-subscribe@dubbo.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@dubbo.apache.org</unsubscribe>
      <post>commits@dubbo.apache.org</post>
    </mailingList>
    <mailingList>
      <name>Issues List</name>
      <subscribe>issues-subscribe@dubbo.apache.org</subscribe>
      <unsubscribe>issues-unsubscribe@dubbo.apache.org</unsubscribe>
      <post>issues@dubbo.apache.org</post>
    </mailingList>
  </mailingLists>

  <scm>
    <connection>scm:git:https://github.com/apache/dubbo.git</connection>
    <developerConnection>scm:git:https://github.com/apache/dubbo.git</developerConnection>
    <tag>HEAD</tag>
    <url>https://github.com/apache/dubbo</url>
  </scm>

  <issueManagement>
    <system>Github Issues</system>
    <url>https://github.com/apache/dubbo/issues</url>
  </issueManagement>

  <properties>
    <!-- Common libs -->
    <!-- <spring_version>4.3.30.RELEASE</spring_version> -->
    <spring_version>5.3.39</spring_version>
    <spring_boot_version>2.7.18</spring_boot_version>
    <spring_security_version>5.8.16</spring_security_version>
    <javassist_version>3.30.2-GA</javassist_version>
    <byte-buddy_version>1.17.1</byte-buddy_version>
    <netty_version>3.2.10.Final</netty_version>
    <netty4_version>4.1.118.Final</netty4_version>
    <netty_http3_version>0.0.28.Final</netty_http3_version>
    <httpclient_version>4.5.14</httpclient_version>
    <httpcore_version>4.4.16</httpcore_version>
    <fastjson_version>1.2.83_noneautotype</fastjson_version>
    <fastjson2_version>2.0.56</fastjson2_version>
    <zookeeper_version>3.7.2</zookeeper_version>
    <curator_version>5.7.1</curator_version>
    <curator_test_version>2.12.0</curator_test_version>
    <hessian_version>4.0.66</hessian_version>
    <protobuf-java_version>3.25.6</protobuf-java_version>
    <jsr305_version>3.0.2</jsr305_version>
    <javax_annotation-api_version>1.3.2</javax_annotation-api_version>
    <servlet_version>3.1.0</servlet_version>
    <jakarta_websocket_version>2.2.0</jakarta_websocket_version>
    <jakarta_servlet_version>6.1.0</jakarta_servlet_version>
    <jetty_version>9.4.57.v20241219</jetty_version>
    <validation_new_version>3.1.1</validation_new_version>
    <validation_version>1.1.0.Final</validation_version>
    <hibernate_validator_version>5.4.3.Final</hibernate_validator_version>
    <hibernate_validator_new_version>7.0.5.Final</hibernate_validator_new_version>
    <jel_version>3.0.1-b12</jel_version>
    <jcache_version>1.1.1</jcache_version>
    <apollo_client_version>2.4.0</apollo_client_version>
    <snakeyaml_version>2.4</snakeyaml_version>
    <commons_lang3_version>3.17.0</commons_lang3_version>
    <envoy_api_version>0.1.35</envoy_api_version>
    <micrometer.version>1.14.4</micrometer.version>
    <opentelemetry.version>1.47.0</opentelemetry.version>
    <zipkin-reporter.version>3.5.0</zipkin-reporter.version>
    <micrometer-tracing.version>1.4.3</micrometer-tracing.version>
    <t_digest.version>3.3</t_digest.version>
    <prometheus_client.version>0.16.0</prometheus_client.version>
    <reactive.version>1.0.4</reactive.version>
    <reactor.version>3.7.3</reactor.version>
    <rxjava.version>2.2.21</rxjava.version>
    <okhttp_version>3.14.9</okhttp_version>

    <rs_api_version>2.1.1</rs_api_version>
    <resteasy_version>3.15.6.Final</resteasy_version>
    <codehaus-jackson_version>1.9.13</codehaus-jackson_version>
    <tomcat_embed_version>8.5.100</tomcat_embed_version>
    <nacos_version>2.5.0</nacos_version>
    <sentinel.version>1.8.8</sentinel.version>
    <seata.version>1.8.0</seata.version>
    <grpc.version>1.70.0</grpc.version>
    <grpc_contrib_verdion>0.8.1</grpc_contrib_verdion>
    <jprotoc_version>1.2.2</jprotoc_version>
    <mustache_version>0.9.14</mustache_version>
    <!-- Log libs -->
    <slf4j_version>1.7.36</slf4j_version>
    <jcl_version>1.3.5</jcl_version>
    <log4j_version>1.2.17</log4j_version>
    <logback_version>1.2.13</logback_version>
    <!-- Fix the bug of log4j refer:https://github.com/apache/logging-log4j2/pull/608 -->
    <log4j2_version>2.24.3</log4j2_version>
    <commons_io_version>2.18.0</commons_io_version>
    <commons-codec_version>1.18.0</commons-codec_version>
    <groovy_version>4.0.25</groovy_version>

    <!-- Test libs -->
    <junit_jupiter_version>5.12.0</junit_jupiter_version>
    <junit_platform_version>1.12.0</junit_platform_version>
    <awaitility_version>4.2.2</awaitility_version>
    <hamcrest_version>2.2</hamcrest_version>
    <cglib_version>2.2.2</cglib_version>
    <mockito_version>4.11.0</mockito_version>
    <spock_version>2.3-groovy-4.0</spock_version>

    <jaxb_version>2.2.7</jaxb_version>
    <activation_version>1.2.0</activation_version>
    <test_container_version>1.20.5</test_container_version>
    <hessian_lite_version>4.0.3</hessian_lite_version>
    <swagger_version>1.6.15</swagger_version>

    <snappy_java_version>1.1.10.7</snappy_java_version>
    <bouncycastle-bcprov_version>1.70</bouncycastle-bcprov_version>
    <metrics_version>2.0.6</metrics_version>
    <gson_version>2.12.1</gson_version>
    <jackson_version>2.18.2</jackson_version>
    <mortbay_jetty_version>6.1.26</mortbay_jetty_version>
    <portlet_version>2.0</portlet_version>
    <maven_flatten_version>1.6.0</maven_flatten_version>
    <commons_compress_version>1.27.1</commons_compress_version>
    <spotless-maven-plugin.version>2.44.3</spotless-maven-plugin.version>
    <spotless.action>check</spotless.action>
    <dubbo-shared-resources.version>1.0.0</dubbo-shared-resources.version>
    <palantirJavaFormat.version>2.38.0</palantirJavaFormat.version>
    <jakarta.xml.bind-api.version>4.0.2</jakarta.xml.bind-api.version>
    <jaxb-runtime.version>2.4.0-b180830.0438</jaxb-runtime.version>
    <!-- Spring boot buddy is lower than the delivery dependency package version and can only show the defined dependency version -->
    <byte-buddy.version>1.15.1</byte-buddy.version>
    <prometheus-client.version>0.16.0</prometheus-client.version>

    <revision>3.3.4</revision>
  </properties>

  <dependencyManagement>
    <dependencies>
      <!-- Common libs -->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-framework-bom</artifactId>
        <version>${spring_version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-bom</artifactId>
        <version>${spring_security_version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-bom</artifactId>
        <version>${netty4_version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-bom</artifactId>
        <version>${micrometer.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-tracing-bom</artifactId>
        <version>${micrometer-tracing.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>io.opentelemetry</groupId>
        <artifactId>opentelemetry-bom</artifactId>
        <version>${opentelemetry.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>io.zipkin.reporter2</groupId>
        <artifactId>zipkin-reporter-bom</artifactId>
        <version>${zipkin-reporter.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>io.prometheus</groupId>
        <artifactId>simpleclient_bom</artifactId>
        <version>${prometheus-client.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!-- Spring Boot -->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${spring_boot_version}</version>
        <type>pom</type>
        <scope>import</scope>
        <exclusions>
          <exclusion>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-core</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
        <version>${spring_boot_version}</version>
        <exclusions>
          <exclusion>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-to-slf4j</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>log4j-over-slf4j</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>log4j-to-slf4j</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-all</artifactId>
        <version>${netty4_version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty.incubator</groupId>
        <artifactId>netty-incubator-codec-http3</artifactId>
        <version>${netty_http3_version}</version>
      </dependency>
      <dependency>
        <groupId>org.javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>${javassist_version}</version>
      </dependency>
      <dependency>
        <groupId>net.bytebuddy</groupId>
        <artifactId>byte-buddy</artifactId>
        <version>${byte-buddy_version}</version>
      </dependency>
      <dependency>
        <groupId>net.bytebuddy</groupId>
        <artifactId>byte-buddy-agent</artifactId>
        <version>${byte-buddy_version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.jboss.netty</groupId>
        <artifactId>netty</artifactId>
        <version>${netty_version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>${httpclient_version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>${httpcore_version}</version>
      </dependency>
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>${fastjson_version}</version>
      </dependency>
      <dependency>
        <groupId>com.alibaba.fastjson2</groupId>
        <artifactId>fastjson2</artifactId>
        <version>${fastjson2_version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>${zookeeper_version}</version>
        <exclusions>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
          </exclusion>
          <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
          </exclusion>
          <exclusion>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
          </exclusion>
          <exclusion>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.yetus</groupId>
            <artifactId>audience-annotations</artifactId>
          </exclusion>
          <exclusion>
            <groupId>io.netty</groupId>
            <artifactId>*</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-framework</artifactId>
        <version>${curator_version}</version>
        <exclusions>
          <exclusion>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-x-discovery</artifactId>
        <version>${curator_version}</version>
        <exclusions>
          <exclusion>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <!-- Alibaba -->

      <dependency>
        <groupId>com.caucho</groupId>
        <artifactId>hessian</artifactId>
        <version>${hessian_version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>hessian-lite</artifactId>
        <version>${hessian_lite_version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>${protobuf-java_version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java-util</artifactId>
        <version>${protobuf-java_version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>${jsr305_version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15on</artifactId>
        <version>${bouncycastle-bcprov_version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-jdk15on</artifactId>
        <version>${bouncycastle-bcprov_version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-ext-jdk15on</artifactId>
        <version>${bouncycastle-bcprov_version}</version>
      </dependency>

      <!-- Common Annotations API -->
      <dependency>
        <groupId>javax.annotation</groupId>
        <artifactId>javax.annotation-api</artifactId>
        <version>${javax_annotation-api_version}</version>
      </dependency>
      <!-- Servlet API -->
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${servlet_version}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <version>${jakarta_servlet_version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>jakarta.websocket</groupId>
        <artifactId>jakarta.websocket-api</artifactId>
        <version>${jakarta_websocket_version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>jakarta.websocket</groupId>
        <artifactId>jakarta.websocket-client-api</artifactId>
        <version>${jakarta_websocket_version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp</artifactId>
        <version>${okhttp_version}</version>
      </dependency>
      <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>mockwebserver</artifactId>
        <version>${okhttp_version}</version>
      </dependency>

      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-server</artifactId>
        <version>${jetty_version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-servlet</artifactId>
        <version>${jetty_version}</version>
      </dependency>
      <dependency>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty</artifactId>
        <version>${mortbay_jetty_version}</version>
        <optional>true</optional>
      </dependency>
      <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>${validation_version}</version>
      </dependency>
      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>${hibernate_validator_version}</version>
      </dependency>
      <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.el</artifactId>
        <version>${jel_version}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.validation</groupId>
        <artifactId>jakarta.validation-api</artifactId>
        <version>${validation_new_version}</version>
      </dependency>
      <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>${hibernate_validator_new_version}</version>
      </dependency>
      <dependency>
        <groupId>javax.cache</groupId>
        <artifactId>cache-api</artifactId>
        <version>${jcache_version}</version>
      </dependency>
      <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>${rs_api_version}</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>${resteasy_version}</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-client</artifactId>
        <version>${resteasy_version}</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-netty4</artifactId>
        <version>${resteasy_version}</version>
        <exclusions>
          <exclusion>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jdk-http</artifactId>
        <version>${resteasy_version}</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson-provider</artifactId>
        <version>${resteasy_version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>${codehaus-jackson_version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>${codehaus-jackson_version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-jaxrs</artifactId>
        <version>${codehaus-jackson_version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-xc</artifactId>
        <version>${codehaus-jackson_version}</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxb-provider</artifactId>
        <version>${resteasy_version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-core</artifactId>
        <version>${tomcat_embed_version}</version>
      </dependency>
      <!-- Log libs -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j_version}</version>
      </dependency>
      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>${jcl_version}</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${commons_io_version}</version>
      </dependency>
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>${commons-codec_version}</version>
      </dependency>
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j_version}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback_version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${log4j2_version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${log4j2_version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>${log4j2_version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j2-impl</artifactId>
        <version>${log4j2_version}</version>
      </dependency>
      <dependency>
        <groupId>com.ctrip.framework.apollo</groupId>
        <artifactId>apollo-client</artifactId>
        <version>${apollo_client_version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-recipes</artifactId>
        <version>${curator_version}</version>
        <exclusions>
          <exclusion>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.yaml</groupId>
        <artifactId>snakeyaml</artifactId>
        <version>${snakeyaml_version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${commons_lang3_version}</version>
      </dependency>
      <dependency>
        <groupId>io.envoyproxy.controlplane</groupId>
        <artifactId>api</artifactId>
        <version>${envoy_api_version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.groovy</groupId>
        <artifactId>groovy</artifactId>
        <version>${groovy_version}</version>
      </dependency>

      <!-- for dubbo-rpc-webservice -->
      <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>${jaxb_version}</version>
      </dependency>
      <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>${jaxb_version}</version>
      </dependency>
      <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>${jaxb_version}</version>
      </dependency>
      <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>javax.activation-api</artifactId>
        <version>${activation_version}</version>
      </dependency>
      <dependency>
        <groupId>com.sun.activation</groupId>
        <artifactId>javax.activation</artifactId>
        <version>${activation_version}</version>
      </dependency>

      <!-- swagger -->
      <dependency>
        <groupId>io.swagger</groupId>
        <artifactId>swagger-annotations</artifactId>
        <version>${swagger_version}</version>
      </dependency>
      <dependency>
        <groupId>io.swagger</groupId>
        <artifactId>swagger-jaxrs</artifactId>
        <version>${swagger_version}</version>
      </dependency>

      <!-- Test libs -->
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit_jupiter_version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-engine</artifactId>
        <version>${junit_platform_version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-commons</artifactId>
        <version>${junit_platform_version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit_platform_version}</version>
        <scope>test</scope>
      </dependency>
      <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-params</artifactId>
        <version>${junit_jupiter_version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.awaitility</groupId>
        <artifactId>awaitility</artifactId>
        <version>${awaitility_version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest</artifactId>
        <version>${hamcrest_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>org.mockito</groupId>
        <artifactId>mockito-inline</artifactId>
        <version>${mockito_version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib-nodep</artifactId>
        <version>${cglib_version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring_version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-core</artifactId>
        <version>${spock_version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-spring</artifactId>
        <version>${spock_version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-junit4</artifactId>
        <version>${spock_version}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>${gson_version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson_version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${jackson_version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson_version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
        <version>${jackson_version}</version>
      </dependency>
      <dependency>
        <groupId>javax.portlet</groupId>
        <artifactId>portlet-api</artifactId>
        <version>${portlet_version}</version>
      </dependency>
      <dependency>
        <groupId>org.testcontainers</groupId>
        <artifactId>testcontainers</artifactId>
        <version>${test_container_version}</version>
      </dependency>
      <dependency>
        <groupId>com.alibaba.nacos</groupId>
        <artifactId>nacos-client</artifactId>
        <version>${nacos_version}</version>
      </dependency>
      <!-- sentinel related dependencies -->
      <dependency>
        <groupId>com.alibaba.csp</groupId>
        <artifactId>sentinel-apache-dubbo3-adapter</artifactId>
        <version>${sentinel.version}</version>
      </dependency>
      <dependency>
        <groupId>com.alibaba.csp</groupId>
        <artifactId>sentinel-transport-simple-http</artifactId>
        <version>${sentinel.version}</version>
      </dependency>
      <!-- seata related dependencies -->
      <dependency>
        <groupId>io.seata</groupId>
        <artifactId>seata-spring-boot-starter</artifactId>
        <version>${seata.version}</version>
        <exclusions>
          <exclusion>
            <groupId>io.seata</groupId>
            <artifactId>seata-core</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>io.seata</groupId>
        <artifactId>seata-core</artifactId>
        <version>${seata.version}</version>
      </dependency>
      <!-- grpc related dependencies -->
      <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-core</artifactId>
        <version>${grpc.version}</version>
      </dependency>
      <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-netty-shaded</artifactId>
        <version>${grpc.version}</version>
      </dependency>
      <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-netty</artifactId>
        <version>${grpc.version}</version>
      </dependency>
      <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-protobuf</artifactId>
        <version>${grpc.version}</version>
      </dependency>
      <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-stub</artifactId>
        <version>${grpc.version}</version>
      </dependency>
      <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-grpclb</artifactId>
        <version>${grpc.version}</version>
      </dependency>
      <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-context</artifactId>
        <version>${grpc.version}</version>
      </dependency>
      <dependency>
        <groupId>com.salesforce.servicelibs</groupId>
        <artifactId>grpc-contrib</artifactId>
        <version>${grpc_contrib_verdion}</version>
      </dependency>
      <dependency>
        <groupId>com.salesforce.servicelibs</groupId>
        <artifactId>jprotoc</artifactId>
        <version>${jprotoc_version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.spullara.mustache.java</groupId>
        <artifactId>compiler</artifactId>
        <version>${mustache_version}</version>
      </dependency>
      <!-- tri compress support-->
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-compress</artifactId>
        <version>${commons_compress_version}</version>
      </dependency>
      <dependency>
        <groupId>org.xerial.snappy</groupId>
        <artifactId>snappy-java</artifactId>
        <version>${snappy_java_version}</version>
        <optional>true</optional>
      </dependency>
      <!-- metrics related dependencies-->
      <dependency>
        <groupId>com.tdunning</groupId>
        <artifactId>t-digest</artifactId>
        <version>${t_digest.version}</version>
      </dependency>
      <dependency>
        <groupId>io.prometheus</groupId>
        <artifactId>simpleclient</artifactId>
        <version>${prometheus_client.version}</version>
      </dependency>
      <dependency>
        <groupId>io.prometheus</groupId>
        <artifactId>simpleclient_pushgateway</artifactId>
        <version>${prometheus_client.version}</version>
      </dependency>
      <!-- reactive related dependencies -->
      <dependency>
        <groupId>org.reactivestreams</groupId>
        <artifactId>reactive-streams</artifactId>
        <version>${reactive.version}</version>
      </dependency>
      <dependency>
        <groupId>io.projectreactor</groupId>
        <artifactId>reactor-core</artifactId>
        <version>${reactor.version}</version>
      </dependency>
      <dependency>
        <groupId>io.reactivex.rxjava2</groupId>
        <artifactId>rxjava</artifactId>
        <version>${rxjava.version}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>${jakarta.xml.bind-api.version}</version>
      </dependency>
      <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>${jaxb-runtime.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>flatten-maven-plugin</artifactId>
        <version>${maven_flatten_version}</version>
        <configuration>
          <updatePomFile>true</updatePomFile>
          <flattenMode>bom</flattenMode>
          <pomElements>
            <dependencyManagement>expand</dependencyManagement>
            <properties>remove</properties>
            <repositories>remove</repositories>
            <profiles>remove</profiles>
          </pomElements>
        </configuration>
        <executions>
          <execution>
            <id>flatten</id>
            <goals>
              <goal>flatten</goal>
            </goals>
            <phase>process-resources</phase>
          </execution>
          <execution>
            <id>flatten.clean</id>
            <goals>
              <goal>clean</goal>
            </goals>
            <phase>clean</phase>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>sign</goal>
                </goals>
                <phase>verify</phase>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>java11+</id>
      <activation>
        <jdk>[11,)</jdk>
      </activation>
      <build>
        <!--- newer versions of plugins requires JDK 11 -->
        <plugins>
          <plugin>
            <groupId>com.diffplug.spotless</groupId>
            <artifactId>spotless-maven-plugin</artifactId>
            <version>${spotless-maven-plugin.version}</version>
            <configuration>
              <java>
                <palantirJavaFormat>
                  <version>${palantirJavaFormat.version}</version>
                </palantirJavaFormat>
                <removeUnusedImports />
                <importOrder>
                  <file>dubbo-importorder.txt</file>
                </importOrder>
                <licenseHeader>
                  <file>checkstyle-header.txt</file>
                </licenseHeader>
              </java>
              <pom>
                <sortPom>
                  <expandEmptyElements>false</expandEmptyElements>
                  <spaceBeforeCloseEmptyElement>true</spaceBeforeCloseEmptyElement>
                </sortPom>
              </pom>
              <upToDateChecking>
                <enabled>true</enabled>
              </upToDateChecking>
            </configuration>
            <dependencies>
              <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>dubbo-shared-resources</artifactId>
                <version>${dubbo-shared-resources.version}</version>
              </dependency>
            </dependencies>
            <executions>
              <execution>
                <goals>
                  <goal>${spotless.action}</goal>
                </goals>
                <phase>process-sources</phase>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>skip-spotless</id>
      <properties>
        <spotless.skip>true</spotless.skip>
      </properties>
    </profile>
  </profiles>

</project>
