custom = true
#
# Edit these properties to point to your local jars.
junit.lib=../../../extension.lib.external/junit.jar
tools.lib=${env.JAVA_HOME}/lib/tools.jar

# Set javac.debug to "true" to enable debug attributes like lines, variables and source-filename
# Set javac.optimize to "on" to enable cpmpiler optimizations
# Set javac.deprecation to "on" to enable deprecation messages during compile
# Set javac.version when you would like to override the java version during testing
javac.debug=true
javac.debuglevel=lines,vars,source
javac.optimize=off
javac.deprecation=off
javac.version=1.8

# Database platform Property defaults
db.driver=oracle.jdbc.OracleDriver
db.platform=org.eclipse.persistence.platform.database.oracle.Oracle11Platform
db.ddl.create=true
db.ddl.drop=true
db.ddl.debug=false

# Do not edit the variables below
# They may, however, be overridden in parent scripts
#     Static Definitions
# -----------------------------------
release.version=3.0.0

src.dir=src
classes.dir=classes
resource.dir=etc
plugins.dir=plugins
report.dir=reports
run.dir=run

# Dependency Definitions
# -----------------------------------
asm.prefix=org.eclipse.persistence.asm
dbwsbldr.prefix=org.eclipse.persistence.dbws.builder
servlet.prefix=javax.servlet
ddlparser.prefix=org.eclipse.persistence.oracleddlparser
wsdl.prefix=javax.wsdl
# Runtime
validation.prefix=javax.validation
mail.prefix=javax.mail
soap.prefix=javax.xml.soap
xdb.jar=xdb.jar
xmlparser.jar=xmlparserv2.jar

# Upper limit 5.0.0 simply to allow room, could be 10.0
# Will find latest checked in version (as long as lower than upper limit).
asm.criteria=[3.3.1,9.0.0)
dbwsbldr.criteria=[2.4.0,5.0.0)
servlet.criteria=[1.0.0,5.0.0)
ddlparser.criteria=[1.0.0,5.0.0)
wsdl.criteria=[1.6.2,5.0.0)
# Runtime
validation.criteria=[1.1.0,5.0.0)
mail.criteria=[1.4.0,5.0.0)
soap.criteria=[1.3.0,5.0.0)

#     Build Artifact Definitions
# -----------------------------------
ejb.jar=javax.ejb_3.1.0.v201205171433.jar
persistence.jar=javax.persistence_unsigned_for_testing_1.0.0.jar
#org.eclipse.persistence.antlr_2.0.0.qualifier.jar
#org.eclipse.persistence.asm_2.0.0.qualifier.jar
#org.eclipse.persistence.core_2.0.0.qualifier.jar
#org.eclipse.persistence.dbws_2.0.0.qualifier.jar
#org.eclipse.persistence.jpa_2.0.0.qualifier.jar
#org.eclipse.persistence.moxy_2.0.0.qualifier.jar
#org.eclipse.persistence.oracle_2.0.0.qualifier.jar
dbwsutils.jar=eclipselink-dbwsutils.jar
dbwsbldrorcltst.jar=eclipselink-dbwsbldr-orcl-tests.jar
eclipselink.jar=eclipselink.jar
