# -----------------------------------------------------------------------------
# Default properties for the Maven build. You can override these properties
# either by defining a build.properties file with the overriden properties
# or by passing them on the command line as system parameters (-D).
# -----------------------------------------------------------------------------

# MAVEN CORE
##############
# comma-spearated list of remote JAR repository URLs
maven.repo.remote=http://repo1.maven.org/maven/,\
		  		  http://people.apache.org/repository/,\
                  http://dist.codehaus.org/,\
                  http://ws.zones.apache.org/repository/,\
                  http://people.apache.org/repo/m1-ibiblio-rsync-repository/

# XDOC PLUGIN
###############
# Display project version and date on web site
maven.xdoc.date = left
maven.xdoc.version = ${pom.currentVersion}

maven.html2xdoc.enabled=false
maven.html2xdoc.dir=./xdocs
maven.junit.fork=yes

sandesha2.version=1.2
sandesha2.module.version=${sandesha2.version}

axis2.version=1.2
axiom.version=1.2.4

addressing.version=${axis2.version}
rampart.version=1.2

neethi.version=2.0.1
XmlSchema.version=1.3.1

annogen.version=0.1.0
backport_util_concurrent.version=2.2
commons.codec.version=1.3
commons.httpclient.version=3.0.1
commons.logging.version=1.1
log4j.version=1.2.13
stax.api.version=1.0.1
stax.impl.groupid=woodstox
stax.impl.artifactid=wstx
stax.impl.version=asl-3.0.0
wsdl4j.version=1.6.2
jakarta.httpcore.version=4.0-alpha4
activation.version=1.1
javamail.version=1.4

repo.addressing.mar.name=addressing

axis2.jar.groupid=org.apache.axis2
axis2.mar.groupid=org.apache.axis2  
commons.fileupload.version=1.1.1