<?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>dubbo-samples-all</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>dubbo-maven-address-plugin</module>
        <module>dubbo-samples-annotation</module>
        <module>dubbo-samples-api</module>
        <module>dubbo-samples-async</module>
        <module>dubbo-samples-attachment</module>
        <module>dubbo-samples-basic</module>
        <module>dubbo-samples-cache</module>
        <module>dubbo-samples-chain</module>
        <module>dubbo-samples-callback</module>
        <module>dubbo-samples-compatible</module>
        <module>dubbo-samples-configcenter</module>
        <module>dubbo-samples-context</module>
        <module>dubbo-samples-direct</module>
        <module>dubbo-samples-docker</module>
        <module>dubbo-samples-echo</module>
        <module>dubbo-samples-gateway</module>
        <module>dubbo-samples-generic</module>
        <module>dubbo-samples-group</module>
        <module>dubbo-samples-governance</module>
        <module>dubbo-samples-http</module>
        <module>dubbo-samples-jetty</module>
        <module>dubbo-samples-local</module>
        <module>dubbo-samples-merge</module>
        <module>dubbo-samples-metadata-report</module>
        <module>dubbo-samples-mock</module>
        <module>dubbo-samples-monitor</module>
        <module>dubbo-samples-multi-registry</module>
        <module>dubbo-samples-default-config</module>
        <module>dubbo-samples-notify</module>
        <module>dubbo-samples-resilience4j</module>
        <module>dubbo-samples-rest</module>
        <module>dubbo-samples-scala</module>
        <module>dubbo-samples-simplified-registry</module>
        <module>dubbo-samples-spi-compatible</module>
        <module>dubbo-samples-spring-hystrix</module>
        <module>dubbo-samples-spring-boot-hystrix</module>
        <module>dubbo-samples-stub</module>
        <module>dubbo-samples-switch-serialization-thread</module>
        <module>dubbo-samples-thrift</module>
        <module>dubbo-samples-validation</module>
        <module>dubbo-samples-version</module>
        <module>dubbo-samples-zipkin</module>
        <module>dubbo-samples-zookeeper</module>
        <module>dubbo-samples-transaction</module>
        <module>dubbo-samples-consul</module>
        <module>dubbo-samples-edas</module>
        <module>dubbo-samples-nacos</module>
        <module>dubbo-samples-metrics</module>
        <module>dubbo-samples-environment-keys</module>
        <module>dubbo-samples-protostuff</module>
        <module>dubbo-samples-serialization</module>
        <module>dubbo-samples-sentinel</module>
        <module>dubbo-samples-grpc</module>
        <module>dubbo-samples-cloud-native</module>
        <module>dubbo-samples-protobuf</module>
        <module>dubbo-samples-protobuf-json</module>
        <module>dubbo-samples-ssl</module>
        <module>dubbo-samples-perf</module>
        <module>dubbo-samples-tengine</module>
        <module>dubbo-samples-webservice</module>
    </modules>

    <repositories>
        <repository>
            <id>apache.snapshots.https</id>
            <name>Apache Development Snapshot Repository</name>
            <url>https://repository.apache.org/content/repositories/snapshots</url>
            <layout>default</layout>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>daily</updatePolicy>
            </snapshots>
        </repository>
    </repositories>
</project>
