#######################################################################################
# Dali dependencies.properties
# A dependency is identied by:
# groupId: a simple component name that adheres to java 
#           variable naming conventions. e.g. wtp
# url:  Url to a remote repository that can be used by a 
#       http GET request to download the library 
#       to a local cache repository. URL should not include the file.
#       See the next description for the file
# file: Name of the library that is used.  If the library is platform dependent
#       it must have suffixes such as: file.linux.gtk.x86
#       These suffixes are the same as those useb by releng baseos,basews,basearch
#            baseos= linux or win32
#            basews= gtk or win32
#            basearch=x86
# name:  A short user readable name for the library.
# description:  One line description for the library.
# autodownload: [optional] default true.  Set this to false if the file cannot be
#                downloaded automatically (i.e. requies license accept click through).
#                If autodownload is false, and the library is not avaialbe in the local
#                repository (cache).  User must download the library and copy it into
#                the local repository. 
# releng.url: [optional] Copies the original to a releng repository.  Useful for libraries
#                        that can get deleted from their original URLs.  Releng will use
#                        the local cache, original url, releng.url in that order to get the
#                        the dependency.  If a releng.url is not provided, the library will
#                        always be requested from itrs original site.
# 
# Example:
# wtp.url  = http://download.eclipse.org/webtools/downloads/drops/R-0.7-200507290654
# wtp.file = wtp-sdk-0.7.zip
# wtp.name = WTP 0.7 SDK
# wtp.description = WTP 0.7 SDK distribution
#######################################################################################

#######################################################################################
# Web Tools Platform (WTP) Dependency
# WTP bundle zip to be downloaded
# WTP SDK will be used for building the distribution
# groupID : wtp
#wtp.url  = http://download.eclipse.org/webtools/committers/drops/R2.0/S-2.0M5-200702201908
#wtp.file = wtp-sdk-S-2.0M5-200702201908.zip
#wtp.name = WTP sdk v2.0 S-2.0M5-200702201908
#wtp.description = WTP sdk bundle v2.0 S-2.0M5-200702201908
wtp.url  = http://download.eclipse.org/webtools/committers/drops/R2.0/S-2.0M5-200702210538
wtp.file = wtp-sdk-S-2.0M5-200702210538.zip
wtp.name = WTP sdk v2.0 S-2.0M5-200702210538
wtp.description = WTP sdk bundle v2.0 S-2.0M5-200702210538
#######################################################################################

#######################################################################################
# WST Automated Tests Dependency
# WTP WST Automated Tests zip to be downloaded
# groupID : wstAutomatedTests
#wstAutomatedTests.url  = http://download.eclipse.org/webtools/committers/drops/R2.0/S-2.0M5-200702201908
#wstAutomatedTests.file = wtp-wst-Automated-Tests-S-2.0M5-200702201908.zip
#wstAutomatedTests.name = WST Automated Tests v2.0 S-2.0M5-200702201908
#wstAutomatedTests.description = WST Automated Tests bundle v2.0 S-2.0M5-200702201908
wstAutomatedTests.url  = http://download.eclipse.org/webtools/committers/drops/R2.0/S-2.0M5-200702210538
wstAutomatedTests.file = wtp-wst-Automated-Tests-S-2.0M5-200702210538.zip
wstAutomatedTests.name = WST Automated Tests v2.0 S-2.0M5-200702210538
wstAutomatedTests.description = WST Automated Tests bundle v2.0 S-2.0M5-200702210538
#######################################################################################
