# common properties

# CHANGE ivy.jar TO REFLECT YOUR INSTALLATION
ivy.jar = /opt/apache-ivy-2.0.0-rc2/ivy-2.0.0-rc2.jar

sigil-ivy-plugin.jar = ${common.dir}/../../../lib/sigil-ivy-plugin.jar

build.dir	= ${basedir}/build
classes.dir	= ${build.dir}/classes
deps.dir	= ${build.dir}/deps
resource.dir	= ${basedir}/xml
src.dir		= ${basedir}/src

dest.dir	= ${build.dir}
dest.lib.dir	= ${dest.dir}/lib
dest.etc.dir	= ${dest.dir}/etc

ivy.file	= ${basedir}/ivy.xml
module.version.target = 1.0

cache.dir	= ${common.dir}/ivy-cache
repository.dir	= ${common.dir}/repository

example.version	= 1.0.0
bundle.version	= ${example.version}

