# -------------------------------------------------------------------
# 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=SNAPSHOT

# -------------------------------------------------------------------
#                Dependency Repositories
# -------------------------------------------------------------------
maven.repo.remote=\
http://www.ibiblio.org/maven,\
http://cvs.apache.org/repository/,\
http://www.apache.org/dist/java-repository/,\
http://www.openejb.org/maven,\
http://dist.codehaus.org/,\
http://mirrors.sunsite.dk/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

# -------------------------------------------------------------------
#                Versions of dependencies
# -------------------------------------------------------------------
commons.logging.version=1.0.4
geronimo.spec.activation.version=1.0.2-rc4
geronimo.spec.javamail.version=1.3.1-rc5
jaxen.version=1.1-beta-7
junit.version=3.8.1
log4j.version=1.2.12
stax.api.version=1.0
#stax.impl.groupid=woodstox
#stax.impl.artifactid=wstx
#stax.impl.version=asl-2.8.1
xmlunit.version=1.0

stax.impl.groupid=stax
stax.impl.artifactid=stax
stax.impl.version=1.1.2-dev

# -------------------------------------------------------------------
#                xdoc
# -------------------------------------------------------------------
maven.xdoc.date=left
maven.xdoc.version=${pom.currentVersion}
maven.xdoc.includeProjectDocumentation=no
maven.html2xdoc.enabled=true
maven.html2xdoc.dir=./xdocs
maven.pdf.navigationFile=navigation-pdf.xml
maven.allreports.disable=true


