<!--
  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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo-parent</artifactId>
        <version>2.6.2-SNAPSHOT</version>
    </parent>
    <artifactId>dubbo-rpc</artifactId>
    <packaging>pom</packaging>
    <name>${project.artifactId}</name>
    <description>The rpc module of dubbo project</description>
    <properties>
        <skip_maven_deploy>false</skip_maven_deploy>
    </properties>
    <modules>
        <module>dubbo-rpc-api</module>
        <module>dubbo-rpc-dubbo</module>
        <module>dubbo-rpc-injvm</module>
        <module>dubbo-rpc-rmi</module>
        <module>dubbo-rpc-hessian</module>
        <module>dubbo-rpc-http</module>
        <module>dubbo-rpc-webservice</module>
        <module>dubbo-rpc-thrift</module>
        <module>dubbo-rpc-memcached</module>
        <module>dubbo-rpc-redis</module>
        <module>dubbo-rpc-rest</module>
    </modules>
</project>
