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

    <groupId>org.apache.dubbo</groupId>
    <artifactId>4-governance</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

    <name>Governance</name>
    <description>Dubbo Governance Samples</description>

    <modules>
        <module>dubbo-samples-applevel-override</module>
        <module>dubbo-samples-configconditionrouter</module>
        <module>dubbo-samples-meshrule-router</module>
        <module>dubbo-samples-metrics-prometheus</module>
        <module>dubbo-samples-metrics-spring-boot</module>
        <module>dubbo-samples-sentinel</module>
        <module>dubbo-samples-servicelevel-override</module>
        <module>dubbo-samples-spring-boot-hystrix</module>
        <module>dubbo-samples-spring-hystrix</module>
        <module>dubbo-samples-ssl</module>
        <module>dubbo-samples-tagrouter</module>
        <module>dubbo-samples-tracing</module>
        <module>dubbo-samples-zipkin</module>
        <module>dubbo-samples-spring-boot3-tracing</module>
        <module>dubbo-samples-spring-boot-tracing-skywalking</module>
    </modules>
</project>
