<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed 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. See accompanying LICENSE file.
-->
<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>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-project</artifactId>
    <version>3.2.0-SNAPSHOT</version>
    <relativePath>../hadoop-project</relativePath>
  </parent>
  <artifactId>hadoop-client-modules</artifactId>
  <packaging>pom</packaging>
  <description>multi-module for Apache Hadoop client artifacts</description>
  <name>Apache Hadoop Client Modules</name>

  <modules>
    <!-- Left as an empty artifact w/dep for compat -->
    <module>hadoop-client</module>
    <!-- Should be used at compile scope for access to IA.Public classes -->
    <module>hadoop-client-api</module>
    <!-- Should be used at runtime scope for remaining classes necessary for hadoop-client-api to function -->
    <module>hadoop-client-runtime</module>
    <!-- Should be used at test scope for those that need access to mini cluster that works with above api and runtime -->
    <module>hadoop-client-minicluster</module>
    <!-- Checks invariants above -->
    <module>hadoop-client-check-invariants</module>
    <module>hadoop-client-check-test-invariants</module>
    <!-- Attempt to use the created libraries -->
    <module>hadoop-client-integration-tests</module>
  </modules>

</project>
