/*
 * 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.
 */
 ext {
  apacheCommonsCollections4Version = "4.0"
  avroVersion = "1.7.7"
  calciteVersion = "1.22.0"
  commonsCliVersion = "1.2"
  commonsCodecVersion = "1.9"
  commonsCollectionVersion = "3.2.1"
  commonsHttpClientVersion = "3.1"
  commonsIoVersion = "2.6"
  commonsLang3Version = "3.4"
  cytodynamicsVersion = "0.2.0"
  elasticsearchVersion = "2.2.0"
  gsonVersion = "2.8.5"
  guavaVersion = "23.0"
  hamcrestVersion = "1.3"
  httpClientVersion = "4.4.1"
  jacksonVersion = "1.9.13"
  jerseyVersion = "2.22.1"
  jettyVersion = "9.4.20.v20190813"
  jodaTimeVersion = "2.2"
  joptSimpleVersion = "5.0.4"
  junitVersion = "4.12"
  kafkaVersion = "2.0.1"
  log4jVersion = "1.2.17"
  log4j2Version = "2.12.0"
  metricsVersion = "2.2.0"
  mockitoVersion = "1.10.19"
  powerMockVersion = "1.6.6"
  rocksdbVersion = "6.6.4"
  scalaTestVersion = "3.0.1"
  slf4jVersion = "1.7.7"
  yarnVersion = "2.7.1"
  zkClientVersion = "0.8"
  zookeeperVersion = "3.4.6"
  failsafeVersion = "1.1.0"
  jlineVersion = "3.8.2"
  jnaVersion = "4.5.1"
  couchbaseClientVersion = "2.7.2"
  couchbaseMockVersion = "1.5.22"
}
