<?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">
  <parent>
    <groupId>org.apache.manifoldcf</groupId>
    <artifactId>mcf-parent</artifactId>
    <version>1.10</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.apache.manifoldcf</groupId>
  <artifactId>mcf-connectors</artifactId>
  <version>1.10</version>

  <name>ManifoldCF - Connectors</name>
  <packaging>pom</packaging>

  <modules>
    <!-- common modules -->
    <module>activedirectory</module>
    <module>alfresco-webscript</module>
    <module>filesystem</module>
    <module>gts</module>
    <module>hdfs</module>
    <module>jcifs</module>
    <module>jdbc</module>
    <module>gridfs</module>
    <module>ldap</module>
    <module>nullauthority</module>
    <module>nulloutput</module>
    <module>nulltransformation</module>
    <module>rss</module>
    <module>sharepoint</module>
    <module>solr</module>
    <module>webcrawler</module>
    <module>cmis</module>
    <module>opensearchserver</module>
    <module>wiki</module>
    <module>alfresco</module>
    <module>elasticsearch</module>
    <module>dropbox</module>
    <module>googledrive</module>
    <module>jira</module>
    <module>generic</module>
    <module>regexpmapper</module>
    <module>email</module>
    <module>amazoncloudsearch</module>
    <module>forcedmetadata</module>
    <module>tika</module>
    <module>documentfilter</module>
    <module>searchblox</module>
    <module>confluence</module>
  </modules>

</project>
