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

version.qualifier=beta1

# For deeper debugging of the build system, set it to true
eclipse.consoleLog=false

# URL of the mirror to use when trying to install Ivy from an official release
mirror.url=http://archive.apache.org/dist/

# properties for hudson build environment
hudson.download.baseurl=http://www.eclipse.org/downloads/download.php
hudson.download.mirror.url=http://carroll.aset.psu.edu/pub/eclipse
hudson.download.mirror.id=546
hudson.download.sdk.name=eclipse-SDK-3.7.1-win32
hudson.download.sdk.dropdir=eclipse/downloads/drops/R-3.7.1-201109091335
hudson.download.sdk.md5=078df5550176e176abdbac1f444725fe
hudson.download.wtp.name=wtp-R-3.1.2-20100211202452
hudson.download.wtp.dropdir=webtools/downloads/drops/R3.1.2/R-3.1.2-20100211202452
hudson.download.wtp.md5=e2c17a1d8b475bca50ac9e96ce23564d
hudson.download.emf.name=emf-runtime-2.5.0
hudson.download.emf.dropdir=modeling/emf/emf/downloads/drops/2.5.0/R200906151043
hudson.download.emf.md5=f12fe508ca23bb11a99d32e946de024f
hudson.download.xsd.name=xsd-runtime-2.5.0
hudson.download.xsd.dropdir=modeling/emf/emf/downloads/drops/2.5.0/R200906151043
hudson.download.xsd.md5=e156ae7e25500603ddc3166b18bb7fb6
hudson.download.gef.name=GEF-SDK-3.5.2
hudson.download.gef.dropdir=tools/gef/downloads/drops/3.5.2/R201002241200
hudson.download.gef.md5=e3aeb007140d5b37c91e8d3d82a37b7a
hudson.download.zest.name=GEF-zest-3.6.2
hudson.download.zest.dropdir=tools/gef/downloads/drops/3.6.2/R201102251600
hudson.download.zest.md5=b7b6f7f07c876ebebdf987e0b3b758e1

hudson.ivy.version=2.4.0-rc1
