import groovy.json.JsonOutput

/*
 * 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.
 */

plugins { id 'org.apache.beam.module' }

applyJavaNature(automaticModuleName: 'org.apache.beam.sdk.extensions.sql.meta.provider.hcatalog')

def hive_version = "2.1.0"
def netty_version = "4.1.30.Final"

dependencies {
  provided project(":sdks:java:extensions:sql")
  provided project(":sdks:java:io:hcatalog")

  // Needed for HCatalogTableProvider tests,
  // they use HCat* types
  testCompile "io.netty:netty-all:$netty_version"
  testCompile("org.apache.hive.hcatalog:hive-hcatalog-core:$hive_version") {
    // Hive brings full Calcite 1.6 + Avatica with JDBC driver which
    // gets registered and gets started instead of ours
    exclude group: "org.apache.calcite", module:"calcite-avatica"
  }
}
