#
# Copyright (c) 2018, 2021 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 v. 2.0 which is available at
# http://www.eclipse.org/legal/epl-2.0,
# or the Eclipse Distribution License v. 1.0 which is available at
# http://www.eclipse.org/org/documents/edl-v10.php.
#
# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
#

# Edit this property to point at your junit.jar
junit.lib=../../../extension.lib.external/junit.jar
# Edit this if/when the release number changes
release.version=3.0.0
test.junit.jvm.modules=-Dignore=true
test.junit.osgi.jvm.modules=--add-modules java.activation,java.xml.bind

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

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

# Do not edit the variables below
# They may, however, be overridden in parent scripts
jaxb-api.jar=jakarta.xml.bind-api.jar
jaxb-impl.jar=jaxb-osgi.jar

#TODO in master there will be jakarta.json-api.jar
json-api.jar=jakarta.json.jar
json-impl.jar=jakarta.json.jar
mail.jar=jakarta.mail.jar
jaxrs.jar=jakarta.ws.rs-api.jar
resource.jar=jakarta.resource-api.jar
ejb.jar=jakarta.ejb-api.jar
jms.jar=jakarta.jms-api.jar
transaction.jar=jakarta.transaction-api.jar
asm.jar=org.eclipse.persistence.asm_7.1.0.v201909231337.jar
asm.version=7.1.0.v201909231337

eclipselink.core.depend=${resource.jar},${ejb.jar},${jms.jar},${transaction.jar},${mail.jar},${jakarta.validation.jar}

eclipselink.jar=eclipselink.jar
eclipselink.core=../../foundation/org.eclipse.persistence.core
eclipselink.plugins=../../plugins
extensions.depend.dir=../../../extension.lib.external
eclipselink.moxy.test=.

tmp.dir=tmp
src.dir=src
build.dir=build
classes.dir=classes
test.dir=test
resource.dir=resource
report.dir=reports

asm=org.eclipse.persistence.asm

xml.platform=org.eclipse.persistence.platform.xml.jaxp.JAXPPlatform
parser=org.eclipse.persistence.platform.xml.jaxp.JAXPParser
# Note: ./dummy_xml_parser.jar doesn't need to exist
# You can set these properties to run moxy tests with any xml parser other than the default from a JVM
xml.parser.jar.dir=.
xml.parser.jar=dummy_xml_parser.jar

# JSR-303/349/380 Dependency Definitions
----------------------------------------------
jakarta.validation.jar=jakarta.validation-api.jar
validation-impl.jar=hibernate-validator-6.0.7.Final.jar
# Hibernate-validator dependencies.
jboss-logging.jar=jboss-logging-3.3.0.Final.jar
javax.el.jar=javax.el-3.0.1-b08.jar
classmate.jar=classmate-1.3.1.jar

#JaCoCo
jacocoagent.jar=jacocoagent.jar
