#/*******************************************************************************
#* This program and the accompanying materials are made available under the terms of
#* the Eclipse Public License v1.0, which accompanies this distribution and is available at
#* http://www.eclipse.org/legal/epl-v10.html.
#*
#* Contributors:
#*     Oracle - initial API and implementation
#******************************************************************************/

#set defaults for values that should already be set
_LibraryName=EclipseLink Mapping Workbench SC Plug-in Tests
_productName=EclipseLink
release.version=2.5.2
javac.version=1.6

# Defines for basic build directories. 
_classesDestDir=${basedir}/classes
_libDir=${basedir}/../../eclipselink.utils.workbench.lib
_mwdevLibDir=${_libDir}/mw
_jarDestDir=${_libDir}/mwtest
_rootResourceDir=${basedir}/resource
_rootSourceDir=${basedir}/source

# Define for eclipselink.jar location
_eclipselinkJar=../../../eclipselink.jar 

# Defined jarfile names. 
scplugin.jarfile=scplugin_test.jar
scplugin.jarfile.src=scplugin_test_src.jar

# Defines for build directories.
compile.scplugin.resources=${_rootResourceDir}
compile.scplugin.srcdir=${_rootSourceDir}
compile.scplugin.destdir=${_classesDestDir}
compile.scplugin.classpath= \
	${_jarDestDir}/utility_test.jar; \
	${_mwdevLibDir}/scplugin.jar; \
	${_mwdevLibDir}/framework.jar; \
	${_mwdevLibDir}/uitools.jar; \
	${_mwdevLibDir}/platformsmodel.jar; \
	${_mwdevLibDir}/utility.jar; \
	${_eclipselinkJar}; \
	${junit.lib}
