# -------------------------------------------------------------------
# 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
# -------------------------------------------------------------------
kandula.version=SNAPSHOT

# -------------------------------------------------------------------
#                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

# -------------------------------------------------------------------
#                Versions of dependencies
# -------------------------------------------------------------------
axis2.version=SNAPSHOT
activation.version=1.1
annogen.version=0.1.0
axiom.version=SNAPSHOT
backport_util_concurrent.version=2.2
commons.codec.version=1.3
commons.httpclient.version=3.0.1
commons.fileupload.version=1.1.1
commons.logging.version=1.1
jakarta.httpcore.version=4.0-alpha3
javamail.version=1.4
jaxen.version=1.1-beta-10
junit.version=3.8.2
neethi.version=2.0
stax.api.version=1.0.1
stax.impl.artifactid=wstx
stax.impl.groupid=woodstox
stax.impl.version=asl-3.0.1
stax_utils.version=20060915 
woden.version=1.0.0M6
wsdl4j.version=1.6.1
XmlSchema.version=1.2
xerces.version=2.8.1
xml_apis.version=1.3.03
log4j.version=1.2.13
repo.addressing.mar.name=addressing
axis2.mar.groupid=org.apache.axis2
# -------------------------------------------------------------------
#                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
