##
# Properties that override Maven build defaults
##

maven.changelog.factory=org.apache.maven.svnlib.SvnChangeLogFactory

maven.checkstyle.properties=${basedir}/checkstyle.xml
maven.checkstyle.excludes=**/parser/*
maven.test.failure = false
maven.junit.fork=true
maven.linkcheck.enable=true 

maven.xdoc.jsl=../commons-build/commons-site.jsl
maven.xdoc.date=left
maven.xdoc.version=${pom.currentVersion}
maven.xdoc.developmentProcessUrl=http://jakarta.apache.org/commons/charter.html
maven.xdoc.poweredby.image=maven-feather.png

# ensure that the digester-x.y-src.tar.gz (and zip) distributions unpack into
# a directory with suffix -src
maven.dist.src.assembly.dir=${maven.dist.assembly.dir}/src/${maven.final.name}-src

# generate .class files that can be loaded into a version 1.2 JVM.
# Digester requires java1.2 collection classes, so doesn't support
# 1.1 JVMs.
maven.compile.target=1.2
maven.compile.source=1.2
