#######################################################################################
# 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://build.eclipse.org/webtools/committers/wtp-R3.0-S/20080601095605/S-3.0RC3-20080601095605
#wtp.file = wtp-sdk-S-3.0RC3-20080601095605.zip
#wtp.name = WTP sdk v3.0 S-3.0RC3-20080601095605
#wtp.description = WTP sdk bundle v3.0 S-3.0RC3-20080601095605
wtp.url  = http://build.eclipse.org/webtools/committers/wtp-R3.0-R/20080616152118/R-3.0-20080616152118
wtp.file = wtp-sdk-R-3.0-20080616152118a.zip
wtp.name = WTP sdk v3.0 20080616152118a
wtp.description = WTP sdk bundle v3.0 20080616152118a
#######################################################################################
