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

#This properties file lists the versions of the various artifacts used by pig and components.
#It drives ivy and the generation of a maven POM

#These are the versions of our common dependencies (in alphabetical order)
apacheant.version=1.7.1
apacherat.version=0.8
automaton.version=1.11-8
avro.version=1.7.7
basjes-httpdlog-pigloader.version=5.0
commons-beanutils.version=1.9.4
commons-cli.version=1.5.0
commons-codec.version=1.15
commons-io.version=2.8.0
commons-el.version=1.0
commons-logging.version=1.2
commons-configuration.version=1.10
commons-collections.version=3.2.2
commons-collections4.version=4.4
commons-math3.version=3.6.1
jersey.version=1.8
checkstyle.version=4.2
ivy.version=2.2.0
groovy.version=2.4.21
guava.version=11.0.2
hbase1.version=1.2.4
hbase2.version=2.0.0
hsqldb.version=2.4.0
hive1.version=1.2.1
hive.version=3.1.2
hive-storage-api.version=2.7.0
orc.version=1.5.6
httpcomponents.version=4.4
jackson.version=1.9.13
jackson-pig-3039-test.version=1.9.9
javacc.version=4.2
javax-inject.version=1
jaxb-api.version=2.2.2
jaxb-impl.version=2.2.3-1
jdeb.version=0.8
jdiff.version=1.0.9
jettison.version=1.3.4
jline.version=2.11
joda-time.version=2.9.9
jopt.version=4.1
json-simple.version=1.1
junit.version=4.11
jruby.version=1.7.26
jython.version=2.7.1
kryo.version=3.0.3
rhino.version=1.7R2
antlr.version=3.4
stringtemplate.version=4.0.4
log4j.version=1.2.16
rats-lib.version=0.5.1
slf4j-api.version=1.6.1
slf4j-log4j12.version=1.6.1
spark1.version=1.6.1
spark2.version=2.4.8
xerces.version=2.10.0
xalan.version=2.7.1
wagon-http.version=1.0-beta-2
zookeeper.version=3.4.5
servlet.version=4.0.6
protobuf-java.version=2.5.0
metrics-core.version=2.1.2
guice.version=3.0
guice-servlet.version=3.0
aopalliance.version=1.0
jsr311-api.version=1.1.1
mockito.version=1.8.4
jansi.version=1.9
asm.version=3.3.1
snappy-java.version=1.1.1.3
parquet-pig-bundle.version=1.9.0
snappy.version=0.2
leveldbjni.version=1.8
curator.version=2.6.0
htrace.version=3.2.0-incubating
htrace4.version=4.0.1-incubating
commons-lang3.version=3.12.0
scala-xml.version=1.0.5
glassfish.el.version=3.0.1-b08
roaring-bitmap-shaded.version=0.7.14
dependency-check-ant.version=5.2.4
woodstox.version=5.3.0
stax2-api.version=4.2.1
