#	 ***************************************************************
#	 * 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
#	 * 
#	 *   https://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.
#	 ***************************************************************
target.ivy.version=2.5.0-rc2
# Following OSGi spec: have to be 3 numbers separated by dots
target.ivy.bundle.version=2.5.0
# in case we want to add a qualifier such as alpha, beta, etc...
# if non empty, add a '_' at the end of the qualifier, so the version would look like 1.2.3.alpha_200901011200
# NB: be careful with naming, OSGi orders version alphabetically. Suggested values: alpha_, beta_, cr1_ (for RC-1), final_
target.ivy.bundle.version.qualifier=cr2_


# Versions of dependencies
#----------------------------------
# 'ant.version' is a built in name containing the version of the current 
# running Ant, so we could not use that name here.
apache-ant.version=1.9.11
ant-contrib.version=1.0b3
bouncycastle.version=1.59
commons-vfs2.version=2.2
hamcrest.version=1.3
httpclient.version=4.5.5
jsch.agentproxy.version=0.0.9
jsch.version=0.1.54
junit.version=4.12
oro.version=2.0.8
xmlunit.version=1.6
