# -------------------------------------------------------------------
# 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=1.2-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-alpha4
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=org.codehaus.woodstox
stax.impl.version=asl-3.2.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
