# -------------------------------------------------------------------
# Copyright 2001-2004 The Apache Software Foundation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# -------------------------------------------------------------------

maven.multiproject.type=jar

# -------------------------------------------------------------------
#                Project Information
# -------------------------------------------------------------------
axiom.version=1.2.1

# -------------------------------------------------------------------
#                Dependency Repositories
# -------------------------------------------------------------------
maven.repo.remote=\
http://www.ibiblio.org/maven,\
https://maven-repository.dev.java.net/nonav/repository/,\
http://people.apache.org/repo/m1-ibiblio-rsync-repository/,\
http://people.apache.org/repository/,\
http://mirrors.sunsite.dk/maven/,\
http://ws.zones.apache.org/~dims/maven/

# -------------------------------------------------------------------
#                JUnit
# -------------------------------------------------------------------
maven.junit.jvmargs=-Xmx256m -Djava.awt.headless=true
maven.junit.fork=true

# -------------------------------------------------------------------
#                Compile
# -------------------------------------------------------------------
maven.compile.optimize=false
maven.compile.fork=true
maven.compile.target=1.3
maven.compile.source=1.3
maven.compile.debuglevel=lines,vars,source
maven.compile.debug=true

# -------------------------------------------------------------------
#                Versions of dependencies
# -------------------------------------------------------------------
commons.logging.version=1.0.4
activation.version=1.1
javamail.version=1.4
jaxen.version=1.1-beta-9
junit.version=3.8.2
log4j.version=1.2.13
stax.api.version=1.0.1
xmlunit.version=1.0
xml_apis.version=1.3.03
stax.impl.groupid=woodstox
stax.impl.artifactid=wstx
stax.impl.version=asl-3.0.0

# -------------------------------------------------------------------
#                xdoc
# -------------------------------------------------------------------
maven.xdoc.date=left
maven.xdoc.version=${pom.currentVersion}
maven.xdoc.includeProjectDocumentation=no
maven.html2xdoc.enabled=true
maven.html2xdoc.dir=src/site/xdoc
maven.pdf.navigationFile=navigation-pdf.xml
maven.allreports.disable=true


