#/*******************************************************************************
#* 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 Workbench UITools Library 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

# Defined jarfile names. 
uitools.jarfile=uitools_test.jar
uitools.jarfile.src=uitools_test_src.jar

# Defines for build directories.
compile.uitools.resources=${_rootResourceDir}
compile.uitools.srcdir=${_rootSourceDir}
compile.uitools.destdir=${_classesDestDir}
compile.uitools.classpath= \
	${_jarDestDir}/utility_test.jar; \
	${_mwdevLibDir}/uitools.jar; \
	${_mwdevLibDir}/utility.jar; \
	${junit.lib}
