<?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-triple</module>
        <module>dubbo-samples-ssl</module>
        <module>dubbo-samples-perf</module>
        <module>dubbo-samples-tengine</module>
        <module>dubbo-samples-webservice</module>
        <module>dubbo-samples-autowire</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>
