# $Id$
#
# Specifies some general properties used throughout.
# Each build.xml must specify root.dir (as a relative path).

lib.dir=lib

root.lib.dir=${root.dir}/${lib.dir}

ext.dist.dir=${root.dir}/ext-dist

root.config.dir=${root.dir}/config

framework.jar=tapestry-${framework.version}.jar
contrib.jar=tapestry-contrib-${framework.version}.jar

examples.dir=${root.lib.dir}/examples

vlib.war=vlib.war
vlib.ear=vlib.ear
vlibbeans.jar=vlibbeans.jar
workbench.war=workbench.war
wap.war=wap.war

ext.download.dir=${ext.dist.dir}/downloads

# Names of directories under lib

ext.dir=ext
j2ee.dir=j2ee
runtime.dir=runtime

jboss.lib.dir=${jboss.dir}/lib
jboss.client.dir=${jboss.dir}/client
jboss.server.all.lib.dir=${jboss.dir}/server/all/lib

# Directory containing source code and package resources
src.dir=src

# Directory containing compiled Java code
classes.dir=classes

# Used as part of copyrights

copyright.years=2000-2004

# ----- JUnit Unit Test Suite, version 3.8 or later -----
junit.home=${ext.download.dir}/junit3.8.1
junit.lib=${junit.home}
junit.jar=${junit.lib}/junit.jar
junit.ext.jar=${ext.dist.dir}/junit.jar
junit.loc=http://telia.dl.sourceforge.net/sourceforge/junit/junit3.8.1.zip

# ----- JDOM Library, version 1.0 -----
jdom.home=${ext.download.dir}/jdom-1.0
jdom.lib=${jdom.home}
jdom.jar=${jdom.lib}/build/jdom.jar
jdom.ext.jar=${ext.dist.dir}/jdom-1.0.jar
jdom.loc=http://www.jdom.org/dist/binary/jdom-1.0.tar.gz

# ----- McKoi Pure Java Database, version 1.0.2 -----
mckoi.home=${ext.download.dir}/mckoi1.0.2
mckoi.lib=${mckoi.home}
mckoi.jar=${mckoi.lib}/mckoidb.jar
mckoi.ext.jar=${ext.dist.dir}/mckoidb.jar
mckoi.loc=http://www.mckoi.com/database/ver/mckoi1.0.2.zip

# ----- DocBook XML, version 4.1.2 -----
docbookxml.file=${ext.dist.dir}/docbkx412.zip
docbookxml.loc=http://www.docbook.org/xml/4.1.2/docbkx412.zip

# ----- DocBook XSL, version 1.64.1 -----
docbookxsl.file=${ext.dist.dir}/docbook-xsl-1.64.1.zip
docbookxsl.loc=http://telia.dl.sourceforge.net/sourceforge/docbook/docbook-xsl-1.64.1.zip

# ----- Apache Forrest, version 0.5.1 -----
forrestdl.home=${ext.download.dir}/apache-forrest-0.5.1-bin
forrestdl.ant.xml=${forrestdl.home}/forrest.antproxy.xml
forrestdl.loc=http://archive.apache.org/dist/forrest/pre-0.6/apache-forrest-0.5.1-bin.zip

# ---- OGNL ----
ognl.version=2.6.7
ognl.loc=http://ognl.org/${ognl.version}/ognl-${ognl.version}.jar
ognl.dest=${root.lib.dir}/${ext.dir}/ognl-${ognl.version}.jar

# ---- Javassist ----

javassist.version=2.5.1
javassist.loc=http://umn.dl.sourceforge.net/sourceforge/jboss/javassist-${javassist.version}.zip
javassist.dest=${ext.download.dir}/javassist-${javassist.version}
javassist.ext.jar=${root.lib.dir}/${ext.dir}/javassist-${javassist.version}.jar
javassist.jar=${javassist.dest}/javassist.jar


