###############################################################################
# Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved.       #
# This program and the accompanying materials are made available under        #
# the terms of the Eclipse Public License v1.0 and Eclipse Distribution       #
# License v. 1.0 which accompanies this distribution.                         #
# The Eclipse Public License is available                                     #
#     at http://www.eclipse.org/legal/epl-v10.html                            #
# and the Eclipse Distribution License is available                           #
#     at http://www.eclipse.org/org/documents/edl-v10.php.                    #
#                                                                             #
# Contributors:                                                               #
#     Tomas Kraus - Initial implementation                                    #
###############################################################################

custom=true
# Edit this if/when the release number changes
release.version=3.0.0

# Edit this property to "true" to enable debug attributes like lines, variables and source-filename
javac.debug=true
javac.debuglevel=lines,vars,source

# Edit this property when you would like to override the java version during testing
javac.version=1.8

# Edit this property when you would like to override the java optimization flag
javac.optimize=off
# Edit this property when you would like to override the java deprecation warning flag
javac.deprecation=off

###############################################################################
#                       Do not edit the variables below                       #
#             They may, however, be overridden in parent scripts              #
###############################################################################
# Directories
src.dir=src
classes.dir=classes
resource.dir=resource

# Test JAR
extension.test.jar=eclipselink-extension-tests.jar

# Dependency jar definitions
eclipselink.jar=eclipselink.jar
test.properties=test.properties

# SLF4J API
org.slf4j.api.jar=org.slf4j.api_1.7.2.v20121108-1250.jar
# SLF4J Logback
ch.qos.logback.core.jar=ch.qos.logback.core_1.0.7.v20121108-1250.jar
ch.qos.logback.classic.jar=ch.qos.logback.classic_1.0.7.v20121108-1250.jar
ch.qos.logback.slf4j.jar=ch.qos.logback.slf4j_1.0.7.v20121108-1250.jar

#JaCoCo
jacocoagent.jar=jacocoagent.jar
