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

-->

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
  <!-- build the phoenix server side jar, that includes phoenix-hadoopX-compat, phoenix-hadoop-compat and antlr -->
  <id>server</id>
  <formats>
    <format>jar</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <dependencySets>
    <dependencySet>
      <outputDirectory>/</outputDirectory>
      <unpack>true</unpack>
      <includes>
        <include>org.apache.phoenix:phoenix-core</include>
        <include>org.iq80.snappy:snappy</include>
	<include>org.antlr:antlr*</include>
        <include>co.cask.tephra:tephra*</include>
        <include>com.google.code.gson:gson</include>
        <include>org.jruby.joni:joni</include>
        <include>org.jruby.jcodings:jcodings</include>
	<include>joda-time:joda-time</include>
	<include>org.apache.twill:twill*</include>
	<include>com.google.inject.extensions:guice-assistedinject</include>
	<include>it.unimi.dsi:fastutil</include>
	<include>io.dropwizard.metrics:metrics-core</include>
	<include>org.apache.thrift:libthrift</include>
      </includes>
    </dependencySet>
  </dependencySets>
</assembly>
