# -------------------------------------------------------------------
# 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
activation.version=1.1
annogen.version=0.1.0
axiom.version=1.2.4
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-asl
stax.impl.groupid=woodstox
stax.impl.version=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
