# -------------------------------------------------------------------
# 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.
# -------------------------------------------------------------------


# -------------------------------------------------------------------
#                Project Information
# -------------------------------------------------------------------
axis2_version=@axis2_version@

# -------------------------------------------------------------------
#                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/,\
http://people.apache.org/~dims/maven/


# -------------------------------------------------------------------
#                Multiproject includes and excludes
# -------------------------------------------------------------------

optional.includes=

maven.multiproject.includes=\
modules/core/project.xml,\
modules/common/project.xml,\
modules/xml/project.xml,\
modules/wsdl/project.xml,\
modules/adb/project.xml,\
modules/codegen/project.xml,\
modules/webapp/project.xml,\
modules/doom/project.xml,\
modules/addressing/project.xml,\
modules/samples/project.xml,\
${optional.includes}

# -------------------------------------------------------------------
#                JUnit
# -------------------------------------------------------------------
maven.junit.jvmargs=-Djava.awt.headless=true
maven.junit.fork=true

# -------------------------------------------------------------------
#                Compile
# -------------------------------------------------------------------
maven.compile.optimize=false
maven.compile.fork=true

# -------------------------------------------------------------------
#                Versions of dependencies
# -------------------------------------------------------------------
ant.version=1.6.5
axis.wsdl4j.version=1.2
backport_util_concurrent.version=2.0_01_pd
bcprov.version=jdk13-128
commons.codec.version=1.3
commons.discovery.version=0.2
commons.fileupload.version=1.0
commons.httpclient.version=3.0
commons.logging.version=1.0.4
geronimo.spec.activation.version=1.0.2-rc4
geronimo.spec.javamail.version=1.3.1-rc5
geronimo.spec.jms.version=1.1-rc4
geronimo.spec.servlet.version=2.4-rc4
servletapi.version=2.3
groovy.all.version=1.0-jsr-01
jaxen.version=1.1-beta-7
junit.version=3.8.1
log4j.version=1.2.12
maven.itest.plugin.version=1.0
opensaml.version=1.0.1
stax.api.version=1.0
stax.impl.groupid=woodstox
stax.impl.artifactid=wstx
stax.impl.version=asl-2.8.1
wss4j.version=SNAPSHOT
xalan.version=2.6.0
xbean.version=2.1.0
xerces.version=2.7.1
xml_apis.version=1.3.02
XmlSchema.version=SNAPSHOT
xmlsec.version=1.2.1
xmlunit.version=1.0
ws_policy.version=SNAPSHOT

#for JAM
annogen.version=0.1.0

#stax.impl.groupid=stax
#stax.impl.artifactid=stax
#stax.impl.version=1.1.2-dev

# -------------------------------------------------------------------
#                Clover
# -------------------------------------------------------------------
maven.clover.build = ${maven.build.dir}
#maven.clover.includes=**/org/apache/**.java
maven.clover.excludes=sample/**/*.java,userguide/**/*.java, test/**/*.java
maven.clover.license.path=clover.license

# -------------------------------------------------------------------
#                xdoc
# -------------------------------------------------------------------
maven.xdoc.date=left
maven.xdoc.version=${pom.currentVersion}
maven.xdoc.includeProjectDocumentation=no
maven.html2xdoc.enabled=false
maven.html2xdoc.dir=./xdocs
maven.pdf.navigationFile=navigation-pdf.xml
maven.allreports.disable=true

