<?xml version="1.0"?>
<!--

    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>
  <parent>
    <artifactId>drill-root</artifactId>
    <groupId>org.apache.drill</groupId>
    <version>2.0.0-SNAPSHOT</version>
  </parent>

  <groupId>org.apache.drill.contrib</groupId>
  <artifactId>drill-contrib-parent</artifactId>
  <name>Drill : Contrib : </name>
  <packaging>pom</packaging>

  <properties>
    <skipTests>false</skipTests>
  </properties>

  <dependencies>
  </dependencies>

  <modules>
    <module>data</module>
    <module>udfs</module>
    <module>storage-hbase</module>
    <module>format-maprdb</module>
    <module>format-syslog</module>
    <module>format-ltsv</module>
    <module>format-excel</module>
    <module>format-httpd</module>
    <module>format-esri</module>
    <module>format-log</module>
    <module>format-pdf</module>
    <module>format-hdf5</module>
    <module>format-sas</module>
    <module>format-spss</module>
    <module>format-xml</module>
    <module>format-image</module>
    <module>format-pcapng</module>
    <module>format-iceberg</module>
    <module>format-deltalake</module>
    <module>storage-drill</module>
    <module>storage-phoenix</module>
    <module>storage-googlesheets</module>
    <module>storage-hive</module>
    <module>storage-mongo</module>
    <module>storage-jdbc</module>
    <module>storage-kafka</module>
    <module>storage-kudu</module>
    <module>storage-opentsdb</module>
    <module>storage-splunk</module>
    <module>storage-http</module>
    <module>storage-druid</module>
    <module>storage-elasticsearch</module>
    <module>storage-cassandra</module>
  </modules>

</project>
