# $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 b8 -----
jdom.home=${ext.download.dir}/jdom-b8
jdom.lib=${jdom.home}
jdom.jar=${jdom.lib}/build/jdom.jar
jdom.ext.jar=${ext.dist.dir}/jdom-b8.jar
jdom.loc=http://www.jdom.org/dist/binary/jdom-b8.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://www.apache.org/dist/forrest/apache-forrest-0.5.1-bin.zip

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

# ---- Javassist ----

javassist.version=2.5.1
javassist.loc=http://telia.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


