# -----------------------------------------------------------------------------
# build.properties.default
#
# This is an example "build.properties" file, used to customize building Tomcat
# for your local environment.  It defines the location of all external
# modules that Tomcat depends on.  Copy this file to "build.properties"
# in the top-level source directory, and customize it as needed.
#
# $Id$
# -----------------------------------------------------------------------------

# ----- Vesion Control Flags -----
version.major=5
version.minor=5
version.build=0
version.patch=0
#Set the pretty version name
version=5.5.24

# ----- Compile Control Flags -----
compile.debug=on
compile.deprecation=off
compile.optimize=off


# ----- Build Control Flags

#Build all components
#full.dist=on

#Hide configuration flags display
#flags.hide=on


# ----- Proxy setup -----
#proxy.host=proxy.domain
#proxy.port=8080
#proxy.use=on


# ----- Default Base Path for Dependent Packages -----
# Please note this path must be absolute, not relative,
# as it is referenced with different working directory
# contexts by the various build scripts.
base.path=/usr/share/java
#base.path=C:/path/to/the/repository
#base.path=/usr/local

# ----- Jakarta files base location -----
base-jakarta.loc=http://archive.apache.org/dist/jakarta

# ----- Logging files base location -----
base-logging.loc=http://archive.apache.org/dist/logging

# ----- XML files base location -----
base-xml.loc=http://archive.apache.org/dist/xml

# ----- Struts files base location -----
base-struts.loc=http://archive.apache.org/dist/struts

# ----- Sourceforge files base location -----
base-sf.loc=http://switch.dl.sourceforge.net/sourceforge
#base-sf.loc=http://heanet.dl.sourceforge.net/sourceforge
#base-sf.loc=http://internap.dl.sourceforge.net/sourceforge

# ----- Additional Tomcat files base location -----
base-tomcat.loc=http://archive.apache.org/dist/tomcat

# --------------------------------------------------
#                REQUIRED LIBRARIES
# --------------------------------------------------


# ----- Commons Beanutils, version 1.4 or later -----
commons-beanutils.home=${base.path}/commons-beanutils-1.7.0
commons-beanutils.lib=${commons-beanutils.home}
commons-beanutils.jar=${commons-beanutils.lib}/commons-beanutils.jar
commons-beanutils.loc=${base-jakarta.loc}/commons/beanutils/binaries/commons-beanutils-1.7.0.tar.gz


# ----- Commons Launcher, version 0.9 or later -----
commons-launcher.home=${base.path}/commons-launcher-0.9
commons-launcher.lib=${commons-launcher.home}
commons-launcher.bin=${commons-launcher.home}/bin
commons-launcher.jar=${commons-launcher.bin}/commons-launcher.jar
commons-launcher.bootstrap.class=${commons-launcher.bin}/LauncherBootstrap.class
commons-launcher.loc=${base-jakarta.loc}/commons/launcher/binaries/launcher-0.9.tar.gz


# ----- Commons Daemon, version 1.0-Alpha or later -----
commons-daemon.home=${base.path}/commons-daemon-1.0.1
commons-daemon.lib=${commons-daemon.home}
commons-daemon.jar=${commons-daemon.lib}/commons-daemon.jar
commons-daemon.loc=${base-jakarta.loc}/commons/daemon/binaries/commons-daemon-1.0.1.tar.gz
commons-daemon.jsvc.tar.gz=${commons-daemon.lib}/bin/jsvc.tar.gz


# ----- Commons Digester, version 1.4 or later -----
commons-digester.home=${base.path}/commons-digester-1.7
commons-digester.lib=${commons-digester.home}
commons-digester.jar=${commons-digester.lib}/commons-digester-1.7.jar
commons-digester.loc=${base-jakarta.loc}/commons/digester/binaries/commons-digester-1.7.tar.gz


# ----- Commons Expression Language (EL), version 1.0 or later -----
commons-el.home=${base.path}/commons-el-1.0
commons-el.lib=${commons-el.home}
commons-el.jar=${commons-el.lib}/commons-el.jar
commons-el.loc=${base-jakarta.loc}/commons/el/binaries/commons-el-1.0.tar.gz


# ----- Commons Logging, version 1.0.1 or later -----
commons-logging.home=${base.path}/commons-logging-1.0.4
commons-logging.lib=${commons-logging.home}
commons-logging-api.jar=${commons-logging.lib}/commons-logging-api.jar
commons-logging.jar=${commons-logging.lib}/commons-logging.jar
commons-logging.loc=${base-jakarta.loc}/commons/logging/binaries/commons-logging-1.0.4.tar.gz


# ----- Commons Modeler, version 2.0 or later -----
commons-modeler.home=${base.path}/commons-modeler-2.0
commons-modeler.lib=${commons-modeler.home}
commons-modeler.jar=${commons-modeler.lib}/commons-modeler-2.0.jar
commons-modeler.loc=${base-jakarta.loc}/commons/modeler/binaries/commons-modeler-2.0.tar.gz

# ----- Xerces XML Parser, version 2.8.0 -----
xerces.home=${base.path}/xerces-2_8_0
xerces.lib=${xerces.home}
xercesImpl.jar=${xerces.lib}/xercesImpl.jar
xml-apis.jar=${xerces.lib}/xml-apis.jar
xerces.loc=${base-xml.loc}/xerces-j/binaries/Xerces-J-bin.2.8.0.tar.gz


# ----- Eclipse JDT, version 3.1.2 or later -----
jdt.home=${base.path}/eclipse/plugins
jdt.lib=${jdt.home}
jdt.jar=${jdt.lib}/org.eclipse.jdt.core_3.1.2.jar
jdt.loc=http://archive.eclipse.org/eclipse/downloads/drops/R-3.1.2-200601181600/eclipse-JDT-3.1.2.zip


# ----- Tomcat native library -----
tomcat-native.home=${base.path}/tomcat-native-current
tomcat-native.tar.gz=${tomcat-native.home}/tomcat-native.tar.gz
tomcat-native.loc=${base-tomcat.loc}/tomcat-connectors/native/tomcat-native-current.tar.gz


# --------------------------------------------------
#              CORE OPTIONAL LIBRARIES
# --------------------------------------------------


# ----- Commons DBCP, version 1.1 or later -----
commons-dbcp.version=1.2.2
commons-dbcp.home=${base.path}/commons-dbcp-1.2.2-src
commons-dbcp-src.loc=${base-jakarta.loc}/commons/dbcp/source/commons-dbcp-1.2.2-src.tar.gz


# ----- Commons HttpClient, version 2.0 or later -----
commons-httpclient.home=${base.path}/commons-httpclient-2.0
commons-httpclient.lib=${commons-httpclient.home}
commons-httpclient.jar=${commons-httpclient.lib}/commons-httpclient-2.0.jar
commons-httpclient.loc=${base-jakarta.loc}/commons/httpclient/binary/commons-httpclient-2.0.tar.gz


# ----- Commons Pool, version 1.1 or later -----
commons-pool.home=${base.path}/commons-pool-1.3-src
commons-pool-src.loc=${base-jakarta.loc}/commons/pool/source/commons-pool-1.3-src.tar.gz


# ----- Commons Collections, version 2.0 or later -----
commons-collections.home=${base.path}/commons-collections-3.1
commons-collections.lib=${commons-collections.home}
commons-collections.jar=${commons-collections.lib}/commons-collections-3.1.jar
commons-collections.loc=${base-jakarta.loc}/commons/collections/binaries/commons-collections-3.1.tar.gz
commons-collections-src.loc=${base-jakarta.loc}/commons/collections/source/commons-collections-3.1-src.tar.gz


# ----- Commons FileUpload, version 1.0-20030531 or later -----
commons-fileupload.home=${base.path}/commons-fileupload-1.0
commons-fileupload.lib=${commons-fileupload.home}
commons-fileupload.jar=${commons-fileupload.lib}/commons-fileupload-1.0.jar
commons-fileupload.loc=${base-jakarta.loc}/commons/fileupload/binaries/commons-fileupload-1.0.tar.gz

# ----- Java Management Extensions (JMX), JMX RI 1.2.1 or later or MX4J 2.0.1 or later -----
jmx.home=${base.path}/mx4j-3.0.1
jmx.lib=${jmx.home}/lib
jmx.jar=${jmx.lib}/mx4j.jar
jmx-tools.jar=${jmx.lib}/mx4j-tools.jar
jmx-remote.jar=${jmx.lib}/mx4j-remote.jar
jmx.loc=${base-sf.loc}/mx4j/mx4j-3.0.1.tar.gz


# ----- JUnit Unit Test Suite, version 3.7 or later -----
junit.home=${base.path}/junit3.8.1
junit.lib=${junit.home}
junit.jar=${junit.lib}/junit.jar
junit.loc=${base-sf.loc}/junit/junit3.8.1.zip


# ----- Rhino ------
rhino.home=${base.path}/rhino1_6R2
rhino.jar=${rhino.home}/js.jar
rhino.loc=http://ftp.mozilla.org/pub/mozilla.org/js/rhino1_6R2.zip

# ----- NSIS, version 2.0 or later -----
nsis.home=${base.path}/nsis-2.0
nsis.exe=${nsis.home}/makensis.exe
nsis.installoptions.dll=${nsis.home}/Plugins/InstallOptions.dll
nsis.nsexec.dll=${nsis.home}/Plugins/nsExec.dll
nsis.nsisdl.dll=${nsis.home}/Plugins/nsisdl.dll
nsis.loc=${base-sf.loc}/nsis/nsis20.exe


# ----- Struts, version 1.2.4 or later -----
struts.home=${base.path}/struts-1.2.7
struts.lib=${struts.home}/lib
struts.jar=${struts.lib}/struts.jar
struts.loc=${base-struts.loc}/binaries/struts-1.2.7.tar.gz


# --------------------------------------------------
#                OPTIONAL LIBRARIES
# --------------------------------------------------


# ----- Java Activation Framework (JAF), version 1.0.1 or later -----
activation.home=${base.path}/jaf-1.0.2
activation.lib=${activation.home}
activation.jar=${activation.lib}/activation.jar

# ----- Java Secure Sockets Extension (JSSE), version 1.0.3 or later -----
jsse.home=${base.path}/jsse-1.0.3
jsse.lib=${jsse.home}/lib
jcert.jar=${jsse.lib}/jcert.jar
jnet.jar=${jsse.lib}/jnet.jar
jsse.jar=${jsse.lib}/jsse.jar

# ----- Java Transaction API (JTA), version 1.0.1a or later -----
jta.home=${base.path}/jta-1_0_1b
jta.lib=${jta.home}
jta.jar=${jta.lib}/jta.jar

# ----- Java Mail, version 1.2 or later -----
mail.home=${base.path}/javamail-1.3.3_01
mail.lib=${mail.home}
mail.jar=${mail.lib}/mail.jar

# ----- PureTLS Extension, version 0.9 or later -----
puretls.home=${base.path}/puretls-0.9b4
puretls.lib=${puretls.home}/build
puretls.jar=${puretls.lib}/puretls.jar

# ----- Servlet API v2.4 -----
servlet-api.home=${base.path}/servlet-api-2.4
servlet-api.lib=${servlet-api.home}/lib
servlet-api.jar=${servlet-api.lib}/servlet-api.jar

# ----- JSP API v2.0 -----
jsp-api.home=${base.path}/jsp-api-2.0
jsp-api.lib=${jsp-api.home}/lib
jsp-api.jar=${jsp-api.lib}/jsp-api.jar
