# 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}
publish.bucket=zodiac.springsource.com
local.repo.dir=${java.io.tmpdir}/local-repository

# 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=

# Web Module Properties
web.module.output.dir=${artifacts.dir}
web.module.output.file=${web.module.output.dir}/${ant.project.name}.jar
web.module.staging.dir=${target.dir}/web-module-expanded
web.module.classes.dir=${web.module.staging.dir}/WEB-INF/classes

# 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 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

# Compiler Properties
org.springframework.build.ant.version=1.1.0.RELEASE
org.eclipse.jdt.core.compiler.batch.version=3.3.0
build.compiler=org.eclipse.jdt.core.JDTCompilerAdapter
compile.debug=true
compile.debug.level=lines,vars,source
compiler.args=-enableJavadoc
source.version=1.5
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.source-jar.output.file=${ant.project.name}-sources-${bundle.version}.jar
org.springframework.build.aws.ant.version=3.0.3.RELEASE

# 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
#bucket.basename=zodiac.springsource.com
zodiac.basename=zodiac.springsource.com
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

# OSGi Properties
org.springframework.build.osgi.version=1.0.0.RELEASE
org.eclipse.osgi.version=3.5.0.v20090311-1300

# S3 Properties
accessKey=
secretKey=

# Eclipse Properties
committerId=
