#	 ***************************************************************
#	 * 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=rc1

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

# Comment out to fail builds if Checkstyle fails
ignore.checkstyle=

# Ivy version to use to build this project
ivy.version=2.5.0-rc1

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

# properties for jenkins build environment
eclipse.download.baseurl=http://download.eclipse.org
eclipse.download.sdk.baseurl=http://archive.eclipse.org
eclipse.download.sdk.name=eclipse-SDK-4.3.2-win32
eclipse.download.sdk.dropdir=eclipse/downloads/drops4/R-4.3.2-201402211700
eclipse.download.sdk.md5=6de9fd3670ecd40b0f8adeb4740dc852
eclipse.download.wtp.name=wtp4x-R-3.4.2-20130208151217
eclipse.download.wtp.dropdir=webtools/downloads/drops/R3.4.2/R-3.4.2-20130208151217
eclipse.download.wtp.md5=db368b786f7a43d373b27f1379b0359f
eclipse.download.emf.name=emf-runtime-2.9.2
eclipse.download.emf.dropdir=modeling/emf/emf/downloads/drops/2.9.2/R201402031126
eclipse.download.emf.md5=498713f53a20d7456042beaa3785baa4
eclipse.download.xsd.name=xsd-runtime-2.9.2
eclipse.download.xsd.dropdir=modeling/emf/emf/downloads/drops/2.9.2/R201402031126
eclipse.download.xsd.md5=1262af8447cb193807cd11c8849b5361
eclipse.download.gef.baseurl=http://archive.eclipse.org
eclipse.download.gef.name=GEF-SDK-3.9.100
eclipse.download.gef.dropdir=tools/gef/downloads/drops/3.9.100/R201405261516
eclipse.download.gef.md5=d8e4d18eb8512e8ddd92446aca92599b
eclipse.download.zest.baseurl=http://archive.eclipse.org
eclipse.download.zest.name=GEF-zest-3.9.100
eclipse.download.zest.dropdir=tools/gef/downloads/drops/3.9.100/R201405261516
eclipse.download.zest.md5=e1cb23da55ad6528f5c587d0b6521fb9
