# Common Properties
lib.dir=${virgo.build.dir}/lib
artifacts.dir=${target.dir}/artifacts
target.dir=${basedir}/target
ci.build=false
natural.name=${ant.project.name}
build.stamp=BUILD-${timestamp}
bundle.version=${version}.${build.stamp}
local.repo.dir=${java.io.tmpdir}/local-repository
virgo.deps.location=ivy-cache

# Artifact Properties
main.java.dir=${basedir}/src/main/java
main.resources.dir=${basedir}/src/main/resources
main.output.dir=${target.dir}/classes
main.webapp.dir=${basedir}/src/main/webapp

# Javadoc Properties
javadoc-all.output.dir=${target.dir}/javadoc-all
javadoc-api.output.dir=${target.dir}/javadoc-api
javadoc.prep.dir=${target.dir}/javadoc-prep
javadoc.exclude.package.names=
javadoc.stylesheet.file=${virgo.build.dir}/common/virgo-javadoc.css
javadoc.resources.dir=${virgo.build.dir}/common/javadoc-resources
javadoc.max.memory=128M

# JAR Properties
implementation.title=${ant.project.name}
implementation.version=${bundle.version}
jar.output.dir=${artifacts.dir}
jar.output.file=${jar.output.dir}/${ant.project.name}.jar
source-jar.output.dir=${artifacts.dir}
source-jar.output.file=${source-jar.output.dir}/${ant.project.name}-sources.jar

# PAR Properties
par.output.dir=${artifacts.dir}
par.output.file=${par.output.dir}/${ant.project.name}.par
par.provided.dir=${target.dir}/par-provided
par.provided.bundles.dir=${par.provided.dir}/bundles
par.provided.libraries.dir=${par.provided.dir}/libraries
par.staging.dir=${target.dir}/par-expanded
application.name=
application.description=

# Library Properties
libd.input.file=${basedir}/${ant.project.name}.libd
libd.output.dir=${artifacts.dir}
libd.output.file=${libd.output.dir}/${ant.project.name}.libd

# Resource Properties
resource.src.dir=${basedir}/src

# WAR (Web Application Archive) Properties
war.output.dir=${artifacts.dir}
war.output.file=${war.output.dir}/${ant.project.name}.war
war.staging.dir=${target.dir}/war-expanded
war.classes.dir=${war.staging.dir}/WEB-INF/classes
war.lib.dir=${war.staging.dir}/WEB-INF/lib

# WAB (Web Application Bundle) Properties
wab.output.dir=${artifacts.dir}
wab.output.file=${wab.output.dir}/${ant.project.name}.jar
wab.staging.dir=${target.dir}/wab-expanded
wab.classes.dir=${wab.staging.dir}/WEB-INF/classes
wab.lib.dir=${wab.staging.dir}/WEB-INF/lib

# Compiler Properties
org.springframework.build.ant.version=1.1.0.RELEASE
org.eclipse.jdt.core.compiler.batch.version=3.6.1
build.compiler=org.eclipse.jdt.core.JDTCompilerAdapter
compile.debug=true
compile.debug.level=lines,vars,source
compiler.args=-enableJavadoc
source.version=1.6
target.version=${source.version}

# Package Properties
copy.to.dir=${package.dist.dir}
package.dir=${target.dir}/package-expanded
package.basename=${natural.name}-${bundle.version}
package.file.name=${package.basename}.zip
package.output.dir=${package.dir}/${package.basename}
package.output.file=${artifacts.dir}/${package.file.name}
package.dist.dir=${package.output.dir}/dist
package.lib.dir=${package.output.dir}/lib
package.src.dir=${package.output.dir}/src
package.docs.dir=${package.output.dir}/docs
package.jar.output.file=${ant.project.name}-${bundle.version}.jar
package.par.output.file=${ant.project.name}-${bundle.version}.par
package.libd.output.file=${ant.project.name}-${bundle.version}.libd
package.war.output.file=${ant.project.name}-${bundle.version}.war
package.wab.output.file=${ant.project.name}-${bundle.version}.jar
package.source-jar.output.file=${ant.project.name}-sources-${bundle.version}.jar
org.springframework.build.aws.ant.version=3.0.3.RELEASE
p2.publishing.dir=${basedir}/target/publishing
p2.launcher.jar=${p2.publishing.dir}/plugins/org.eclipse.equinox.launcher.jar

#Updatesite Properties
tools.dir=${target.dir}/virgo-build-tools-${org.eclipse.virgo.build.tools}
tools.org.eclipse.equinox.launcher=1.3.0.v20111003-1644
p2.repository.dir=${target.dir}/repository
updatesite.basename=${natural.name}-updatesite-${bundle.version}
updatesite.file.name=${updatesite.basename}.zip
updatesite.output.file=${artifacts.dir}/${updatesite.file.name}

# AspectJ Properties
org.aspectj.tools.version=1.6.6.RELEASE
aspectj.x=

# Test Properties
test.forkmode=perBatch
test.java.dir=${basedir}/src/test/java
test.resources.dir=${basedir}/src/test/resources
test.output.dir=${target.dir}/test-classes
test-results.output.dir=${target.dir}/test-results
test.vm.args=

# Clover Properties
clover.db.dir=${clover.output.dir}/db
clover.db.file=${clover.db.dir}/clover.db
clover.output.dir=${target.dir}/clover
clover.staging.dir=${clover.output.dir}/staging
main.clover.dir=${clover.staging.dir}/main
test.clover.dir=${clover.staging.dir}/test
com.springsource.com.cenqua.clover.version=2.6.0
clover.enforce=false
clover.coverage=0%

# Docbook Properties
docbook.dir=${lib.dir}/docbook
docbook.target.dir=${target.dir}/docbook
org.apache.velocity.docbookframework.dist.version=1.0.0.BUILD-20080625
com.springsource.net.sf.xslthl.version=1.2.0
com.springsource.org.apache.xerces.version=2.8.1
docbook.build.dir=${virgo.build.dir}/docbook
docbook.output.dir=${target.dir}/${ant.project.name}
docbook.staging.dir=${docbook.target.dir}/staging
docbook.src.dir=${basedir}/src
docbook.images.dir=${basedir}/images
docbook.css.dir=${docbook.build.dir}/css
docbook.styles.dir=${docbook.build.dir}/styles

# Findbugs Properties
findbugs.dir=${lib.dir}/findbugs
findbugs.exclude.file=${virgo.build.dir}/common/findbugs-exclude.xml
findbugs.output.dir=${target.dir}/findbugs
findbugs.output.file=${findbugs.output.dir}/${ant.project.name}.xml
edu.umd.cs.findbugs.version=1.3.7

# Ivy Properties
release.type=integration
ivy.checksums=sha1
ivy.deliver.revision=${bundle.version}
ivy.file=${basedir}/ivy.xml
ivy.lib.dir=${lib.dir}/ivy
ivy.output.dir=${artifacts.dir}
ivy.output.file=${ivy.output.dir}/ivy.xml
ivy.settings.file=${virgo.build.dir}/common/ivysettings.xml
ivy.report.todir=${artifacts.dir}/reports

# Maven Properties
pom.output.dir=${artifacts.dir}
pom.output.file=${pom.output.dir}/pom.xml
local.pom.output.file=${basedir}/pom.xml
org.apache.maven.ant.version=2.0.10
org.springframework.build.aws.maven.version=2.0.0.RELEASE

# Bundlor Properties
bundlor.ant.version=1.0.0.RELEASE
manifest.template.file=${basedir}/template.mf
merge.existing.headers=true
fail.on.warnings=true

# Eclipse key file location
key.file=${user.home}/.ssh/id_rsa
passphrase=
eclipse.committerId=
eclipse.buildId=virgoBuild

