
# Chainsaw requires the following jars to build and run:
# * Jakarta ORG 2.0.6+
# * Jakarta Commons VFS 1.0 RC1+ (requires sub-dependecy of Jakarta Commons Logging).
# * XStream - http://xstream.codehaus.org (BSD License)
# 
# Place the Jars in a local 'lib' folder, and Chainsaw should compile and run
#
# Jakarta Commons VFS Required if you wish to compile and include the 
# org.apache.log4j.chainsaw.vfs.VFSLogFilePatternReceiver virtual file system receiver
# to access log files in Chainsaw, but is optional.
#
# See http://jakarta.apache.org/commons/sandbox/vfs/filesystems.html 
# for a full description of supported file systems (ssh, zip, etc).
#
# See http://jakarta.apache.org/commons/sandbox/vfs/download.html for 
# file system-specific jars required when running Chainsaw with a VFSLogFilePatternReceiver
#
# NOTE: VFS requires Commons logging JAR as well, otherwise it won't work.

# Place all the dependencies in this directory (except ORO)
# Dependencies directory
deps.dir=lib