# -------------------------------------------------------------------
# build.properties.sample
#
# This is an example "build.properties" file, used to customize 
# building various Commons components for your local environment.  
# Make any changes you need, and rename this file to 
# "build.properties" 
#
# $Id: build.properties.sample,v 1.4 2002/04/24 01:02:55 dmitri Exp $
# -------------------------------------------------------------------


# -------------------------------------------------------------------
# EXTERNAL DEPENDENCIES 
# -------------------------------------------------------------------

junit.jar=${lib.repo}/junit-3.7.jar

jaxp.jaxp.jar=${lib.repo}/jaxp-1.1.jar
jaxp.xslt.jar=${lib.repo}/xalan-2.1.0.jar

# The Servlet API (See http://java.sun.com/products/servlet)

servlet.jar=${lib.repo}/servlet.jar

# ===================================================================
# Anakia Properties (used by the xdoc target)
# ===================================================================

velocity.jar=${lib.repo}/velocity-1.3-dev.jar
jdom.jar=${lib.repo}/jdom-b7.jar
xerces.jar=${lib.repo}/xerces-1.4.3.jar
commons-collections.jar=${lib.repo}/commons-collections.jar
logkit.jar=${lib.repo}/logkit-1.0.jar