# Link to dependencies not in SVN, assumes default location, if you store elsewhere you need to edit these.
junit.lib=../../../extension.lib.external/junit.jar
eclipselink.jar=eclipselink.jar

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

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

# Do not edit the properties below.
eclipselink.plugins=../plugins
eclipselink.plugins.trunk=../../plugins

stax_api.jar=javax.xml.stream_1.0.1.v201004272200.jar
activation.jar=javax.activation_1.1.0.v201108011116.jar
mail.jar=javax.mail_1.4.0.v201005080615.jar
resource.jar=javax.resource_1.5.0.v200906010428.jar
ejb.jar=javax.ejb_3.0.0.v200906010428.jar
jms.jar=javax.jms_1.1.0.v200906010428.jar
transaction.jar=javax.transaction_1.1.0.v201002051055.jar

eclipselink.core.depend=${activation.jar},${resource.jar},${ejb.jar},${jms.jar},${stax_api.jar},${transaction.jar},${mail.jar}
eclipselink.core=../org.eclipse.persistence.core
eclipselink.core.trunk=../../foundation/org.eclipse.persistence.core
eclipselink.jpa=../org.eclipse.persistence.jpa
eclipselink.jpa.test=../eclipselink.jpa.test
eclipselink.core.test=../eclipselink.core.test
eclipselink.core.test.trunk=../../foundation/eclipselink.core.test

asm=org.eclipse.persistence.asm
antlr=org.eclipse.persistence.antlr

unsigned.persistence10.jar=javax.persistence_unsigned_for_testing_1.0.0.jar

test.properties=./test.properties
src.dir=src
classes.dir=classes
build.dir=build
resource.dir=resource

jpa.spring=jpa-spring
spring.jlib.dir=../../../extension.lib.external/spring
# JTA tests use JOTM from JOTM website (compile only jar in Spring)
spring.jlib=aop.jar,asm.jar,aspects.jar,beans.jar,context.jar,context.support.jar,core.jar,expression.jar,instrument.jar,instrument.tomcat.jar,jdbc.jar,jms.jar,orm.jar,oxm.jar,test.jar,transaction.jar,aopalliance-1.0.jar,commons-logging.jar,cglib-nodep-2.1_3.jar,jotm-client.jar,spring-tx-2.5.jar,xapool.jar

# (ant generated)
spring.jpa.spring.lib=/eclipselink.jpa.spring.test/jpa-spring.jar

spring.install.root=C:/opt/spring-framework-2.5.6.SEC01
spring.agent.lib=${spring.install.root}/dist/weaving/spring-agent.jar
spring.cglib.lib=${spring.install.root}/lib/cglib/cglib-nodep-2.1.3.jar
spring.commons.logging.lib=${spring.install.root}/lib/jakarta-commons/commons-logging.jar
spring.jotm.client.lib=${spring.install.root}/lib/jotm/jotm.jar
spring.lib=${spring.install.root}/dist/spring.jar
spring.test.lib=${spring.install.root}/dist/modules/spring-test.jar
spring.xapool.lib=${spring.install.root}/lib/jotm/xapool.jar