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

#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

# Orbit drop used:  http://download.eclipse.org/tools/orbit/downloads/drops/R20100519200754/
#    The following shell command run from the build server will result in the latest
#    Orbit release "R" build:
#        ls -r /home/data/httpd/download.eclipse.org/tools/orbit/downloads/drops/ | grep -m1 R20
#
# "junit.lib" property is defined in "init" target of autobuild.xml
junit.drop=R200709171314
junit.bundle=org.junit_3.8.2.v200706111738
mail.bundle=javax.mail_1.4.0.v200706111329
maven.ant.bundle=maven-ant-tasks-2.0.8


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
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

# Publishing and Signing Definitions
# ----------------------------------
eclipselink.root.download.dir=/home/data/httpd/download.eclipse.org/rt/eclipselink
signing.dir=/opt/public/download-staging.priv/rt/eclipselink

p2.milestone.repos.name=EclipseLink Milestone Repository
p2.release.repos.name=EclipseLink Release Repository
p2.nightly.repos.name=EclipseLink Nightly Build Repository

