<?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.

-->
<component>
  <fileSets>
     <!-- Add the client & mapreduce jars. Expects the client jar packaging phase to already be run,
      which is determined by specification order in the pom. -->
    <fileSet>
      <directory>${project.basedir}/../phoenix-flume-base/phoenix4-flume/target</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>phoenix4-flume-${project.version}.jar</include>
        <include>phoenix4-flume.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>${project.basedir}/../phoenix-kafka-base/phoenix4-kafka/target</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>phoenix4-kafka-${project.version}-minimal.jar</include>
        <include>phoenix4-kafka.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>${project.basedir}/../phoenix-pig-base/phoenix4-pig/target</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>phoenix4-${project.version}-pig.jar</include>
        <include>phoenix4-pig.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>${project.basedir}/../phoenix-spark-base/phoenix4-spark/target</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>phoenix4-${project.version}-spark.jar</include>
        <include>phoenix4-spark.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>${project.basedir}/../phoenix-hive-base/phoenix4-hive/target</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>phoenix4-${project.version}-hive.jar</include>
        <include>phoenix4-hive.jar</include>
      </includes>
    </fileSet>
  </fileSets>
</component>
