# Properties used in building the eclipselink.jar.

# The directory that holds the oracle-specific jar files.
# You can either put the jars in this directory, or specify your own directory.
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.5

eclipselink.log.level=info

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

build.dir=build
classes.dir=classes
plugins.dir=plugins
report.dir=reports
resource.dir=resource
run.dir=run
src.dir=src
tmp.dir=tmp

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

#     Variable Definitions (execution location dependent)
# -----------------------------------
eclipselink.plugins=${plugins.dir}

eclipselink.examples.base=examples
eclipselink.core.base=foundation
eclipselink.dbws.base=dbws
eclipselink.jpa.base=jpa
eclipselink.moxy.base=moxy
eclipselink.sdo.base=sdo
eclipselink.util.base=utils

eclipselink.asm=${eclipselink.plugins}/${asm}
eclipselink.antlr=${eclipselink.plugins}/${antlr}

eclipselink.core=${eclipselink.core.base}/org.eclipse.persistence.core
eclipselink.core.bin=${eclipselink.core.base}/bin
eclipselink.core.test=${eclipselink.core.base}/eclipselink.core.test
eclipselink.core.xsds=${eclipselink.core}/resource/xsd
eclipselink.core.plugins=${eclipselink.core.base}/${plugins.dir}
eclipselink.core.depend=javax.activation_1.1.0.v200806101325.jar,javax.resource_1.5.0.jar,javax.ejb_3.0.0.jar,javax.jms_1.1.0.jar,javax.xml.stream_1.0.1.v200903100845.jar,javax.transaction_1.1.0.jar,javax.mail_1.4.0.v200804091730.jar,javax.persistence_1.0.0.v200905011740.jar

eclipselink.extension.oracle=${eclipselink.core.base}/org.eclipse.persistence.oracle
eclipselink.extension.oracle.test=${eclipselink.core.base}/eclipselink.extension.oracle.test
oracle.extensions.depend.jars=ojdbc6.jar,aqapi.jar,sdoapi.jar,xdb.jar,xmlparserv2.jar
eclipselink.extension.oracle.dir=${eclipselink.core.plugins}

eclipselink.dbws=${eclipselink.dbws.base}/org.eclipse.persistence.dbws
eclipselink.dbws.test=${eclipselink.dbws.base}/eclipselink.dbws.test
eclipselink.dbws.xsds=${eclipselink.dbws}/resource/xsd
eclipselink.dbws.plugins=${eclipselink.moxy.base}/${plugins.dir}

eclipselink.jpa=${eclipselink.jpa.base}/org.eclipse.persistence.jpa
eclipselink.jpa.test=${eclipselink.jpa.base}/eclipselink.jpa.test
eclipselink.jpa.spring.test=${eclipselink.jpa.base}/eclipselink.jpa.spring.test
eclipselink.jpa.xsds=${eclipselink.jpa}/resource/org/eclipse/persistence/jpa
eclipselink.jpa.plugins=${eclipselink.jpa.base}/${plugins.dir}
eclipselink.equinox=${eclipselink.jpa.base}/org.eclipse.persistence.jpa.equinox
eclipselink.weaving=${eclipselink.jpa.base}/org.eclipse.persistence.jpa.equinox.weaving

jpa.prototype=${eclipselink.jpa.plugins}/javax.persistence
jpa.prototype.jar=javax.persistence_1.99.0.v200906021518.jar

eclipselink.moxy=${eclipselink.moxy.base}/org.eclipse.persistence.moxy
eclipselink.moxy.bin=${eclipselink.moxy.base}/bin
eclipselink.moxy.test=${eclipselink.moxy.base}/eclipselink.moxy.test
eclipselink.moxy.plugins=${eclipselink.moxy.base}/${plugins.dir}

eclipselink.sdo=${eclipselink.sdo.base}/org.eclipse.persistence.sdo
eclipselink.sdo.bin=${eclipselink.sdo.base}/bin
eclipselink.sdo.test=${eclipselink.sdo.base}/eclipselink.sdo.test
eclipselink.sdo.plugins=${eclipselink.sdo.base}/${plugins.dir}
eclipselink.sdo.test.server.wls=${eclipselink.sdo.base}/eclipselink.sdo.test.server.wls

eclipselink.util.dbws=${eclipselink.util.base}/eclipselink.utils.dbws
eclipselink.util.dbws.test=${eclipselink.util.base}/eclipselink.utils.dbws.test

eclipselink.util.jaxb=${eclipselink.util.base}/eclipselink.utils.jaxb

eclipselink.util.plugins=${eclipselink.util.base}/${plugins.dir}

eclipselink.util.rename=${eclipselink.util.base}/eclipselink.utils.rename
eclipselink.util.rename.resource=${eclipselink.util.rename}/resource

eclipselink.util.workbench=${eclipselink.util.base}/eclipselink.utils.workbench
eclipselink.util.workbench.lib=${eclipselink.util.base}/eclipselink.utils.workbench.lib
eclipselink.util.workbench.test=${eclipselink.util.base}/eclipselink.utils.workbench.test

javadoc.prefixTitle=EclipseLink ${release.version}
javadoc.postfixTitle=API Reference

struct_converter.classes.dir=struct_converter_jar
eclipselink.oracle.depend.jar=eclipselink-extension-oracle.jar
eclipselink.javadocs=${build.dir}/javadocs

xml.platform=org.eclipse.persistence.platform.xml.jaxp.JAXPPlatform

sdo.classgen.run.path=../../../${eclipselink.jar.name}${path.separator}../../../${eclipselink.sdo.test}/classes${path.separator}../../../${eclipselink.sdo.base}/plugins/${commonj.sdo.lib}${path.separator}../../../${eclipselink.plugins}/javax.activation_1.1.0.v200806101325.jar${path.separator}../../../${eclipselink.plugins}/javax.mail_1.4.0.v200804091730.jar

#     Build Artifact Definitions
# -----------------------------------
eclipselink.jar.name=eclipselink.jar
eclipselink.install.prefix=eclipselink
eclipselink.example.install.prefix=${eclipselink.install.prefix}-examples
eclipselink.src.install.prefix=${eclipselink.install.prefix}-src
eclipselink.tst.src.prefix=${eclipselink.install.prefix}-test-src
eclipselink.plugins.install.prefix=eclipselink-plugins
eclipselink.javadoc.install.prefix=eclipselink-javadocs
eclipselink.zip.suffix=.zip
dbws-util.jar.name=eclipselink-dbwsutils.jar
# should pull in component properties instad of redefining
package-rename.jar=package-rename.jar
package-rename.properties=package-rename.properties
persistence.jar=javax.persistence_1.0.0.v200905011740.jar
jaxb-api.jar=javax.xml.bind_2.0.0.v20080604-1500.jar
jaxb-xjc.jar=jaxb-xjc.jar
jaxb-impl.jar=jaxb-impl.jar
jsr173_1.0_api.jar=javax.xml.stream_1.0.1.v200903100845.jar
activation.jar=javax.activation_1.1.0.v200806101325.jar
mail.jar=javax.mail_1.4.0.v200804091730.jar
commonj.sdo.lib=commonj.sdo_2.1.1.v200905221342.jar
wsdl.lib=javax.wsdl_1.6.2.v200806030405.jar

#    Definitions for Maven
------------------------------
eclipselink.antlr.bndl.prefix=org.eclipse.persistence.antlr
eclipselink.asm.bndl.prefix=org.eclipse.persistence.asm
eclipselink.core.bndl.prefix=org.eclipse.persistence.core
eclipselink.oracle.bndl.prefix=org.eclipse.persistence.oracle
eclipselink.jpa.bndl.prefix=org.eclipse.persistence.jpa
eclipselink.equinox.bndl.prefix=org.eclipse.persistence.jpa.equinox
eclipselink.weaving.bndl.prefix=org.eclipse.persistence.jpa.equinox.weaving
eclipselink.moxy.bndl.prefix=org.eclipse.persistence.moxy
eclipselink.sdo.bndl.prefix=org.eclipse.persistence.sdo
eclipselink.dbws.bndl.prefix=org.eclipse.persistence.dbws

about-file=about.html
readme-file=readme.html
license-files=license.*
setenv-scripts=setenv.*
package-rename-scripts=packageRename.*
jaxb-compiler-scripts=jaxb-compiler.*
sdo-compiler-scripts=sdo-compiler.*

#Manifest Information
eclipselink.specification.title=Eclipse Persistence Services
specification.vendor=Eclipse.org - EclipseLink Project
eclipselink.implementation.title=org.eclipse.persistence
implementation.vendor=${specification.vendor}
eclipselink.premain.class=org.eclipse.persistence.internal.jpa.deployment.JavaSECMPInitializerAgent
