# build.type should be set to an appropriate value for Milestone Builds {ie. "M4") and be blank for Release Builds
release.version=1.2.1

#These are "default" values. They should already be set by the time this file is loaded
# ie. do NOT depend upon the fact that they will be at runtime as they are defined here.
# ---------------------------------------------------------------
junit.lib=${basedir}/junit.jar
build.root.dir=${basedir}
log.dir=${basedir}/log

# Dependency definitions
# ----------------------
jdbc.driver.lib=${jdbc.driver.lib.dir}/mysql-connector-java-5.1.17-bin.jar
jdbc.driver.lib.dir=/shared/common/mysql-connector-java-5.1.17

# "junit.lib" property is defined in "init" target of autobuild.xml
junit.drop=R200709171314
junit.bundle=org.junit_3.8.2.v200706111738

activation.bundle=javax.activation_1.1.0.v200706111329
mail.bundle=javax.mail_1.4.0.v200706111329
maven.ant.bundle=maven-ant-tasks-2.0.8
bndtool.jar=bnd-0.0.366.jar

extensions.depend.dir=${build.deps.dir}

# URLs to Download Build dependencies
junit.url=http://download.eclipse.org/tools/orbit/downloads/drops/${junit.drop}/bundles/${junit.bundle}.zip
activation.url=http://download.eclipse.org/tools/orbit/downloads/drops/${junit.drop}/bundles/${activation.bundle}.jar
mail.url=http://download.eclipse.org/tools/orbit/downloads/drops/${junit.drop}/bundles/${mail.bundle}.jar
mavenant.url=http://archive.apache.org/dist/maven/binaries/${maven.ant.bundle}.jar

# Logfile definitions
# -------------------
core.test.regression.log=${log.dir}/core.test.regression.log
result.file=${log.dir}/jpa.results

#Automated Build Artifact Definitions
# -----------------------------------
core.test.properties=${basedir}/core.test.properties

#Automated Testing and Test Result Definitions
# --------------------------------------------
# set this to a non existant directory so the tests do not include the struct converter tests
eclipselink.extension.oracle.test=.
eclipselink.extension.oracle.test.trunk=.

# db.user, db.pwd and db.url need to be defined in ${env.HOME_DIR}/db.dat
# db.url left in here for documentation purposes
jdbc.driver.jar=${jdbc.driver.lib}
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost/eclipselink
db.user=
db.pwd=
db.platform=org.eclipse.persistence.platform.database.MySQLPlatform

# logging level for SRG/LRG testing
# ---------------------------------
test.logging.level=FINEST
#test.logging.level=NONE

eclipselink.download.path=/home/data/httpd/download.eclipse.org/rt/eclipselink

