<!--

    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>
  <packaging>pom</packaging>
  <parent>
    <groupId>org.apache.pulsar</groupId>
    <artifactId>pulsar</artifactId>
    <version>2.6.3</version>
  </parent>

  <artifactId>pulsar-io</artifactId>
  <name>Pulsar IO :: Parent</name>

  <modules>
    <module>core</module>
    <module>batch</module>
    <module>batch-discovery-triggerers</module>
    <module>batch-data-generator</module>
    <module>common</module>
    <module>docs</module>
    <module>aws</module>
    <module>twitter</module>
    <module>cassandra</module>
    <module>aerospike</module>
    <module>kafka</module>
    <module>rabbitmq</module>
    <module>kinesis</module>
    <module>hdfs3</module>
    <module>jdbc</module>
    <module>data-generator</module>
    <module>elastic-search</module>
    <module>kafka-connect-adaptor</module>
    <module>debezium</module>
    <module>hdfs2</module>
    <module>canal</module>
    <module>file</module>
    <module>netty</module>
    <module>hbase</module>
    <module>mongo</module>
    <module>flume</module>
    <module>redis</module>
    <module>solr</module>
    <module>influxdb</module>
    <module>dynamodb</module>
  </modules>

</project>
