# -------------------------------------------------------------------
# Copyright 2001-2006 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
# -------------------------------------------------------------------
version_number=1.0
version_affix=RC5
#axis2_version=${version_number}-${version_affix}
axis2_version=${version_number}
addressing_version=${version_number}
rampart_version=${version_number}
rahas_version=SNAPSHOT
soapmonitor_version=${version_number}

# -------------------------------------------------------------------
#                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://jibx.sourceforge.net/maven/


# -------------------------------------------------------------------
#                Multiproject includes and excludes
# -------------------------------------------------------------------

optional.includes=

maven.multiproject.includes=\
modules/common/project.xml,\
modules/java2wsdl/project.xml,\
modules/adb/project.xml,\
modules/codegen/project.xml,\
modules/xmlbeans/project.xml,\
modules/java2wsdl/project.xml,\
modules/core/project.xml,\
modules/addressing/project.xml,\
modules/tool/project.xml,\
modules/samples/project.xml,\
modules/security/project.xml,\
modules/soapmonitor/project.xml,\
modules/integration/project.xml,\
modules/saaj/project.xml,\
modules/jibx/project.xml,\
${optional.includes}

#maven.multiproject.excludes=modules/tool/project.xml

# -------------------------------------------------------------------
#                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.4
maven.compile.source=1.4

# -------------------------------------------------------------------
#                Versions of dependencies
# -------------------------------------------------------------------
annogen.version=0.1.0
ant.version=1.6.5
axiom.version=1.0
backport_util_concurrent.version=2.1
bcel.version=5.1
bcprov.version=jdk13-132
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
groovy.all.version=1.0-jsr-01
jaxen.version=1.1-beta-8
jaxme.version=0.5.1
jibx.version=1.1-beta3
junit.version=3.8.1
log4j.version=1.2.13
maven.itest.plugin.version=1.0
opensaml.version=1.0.1
policy.version=1.0.1
servletapi.version=2.3
stax.api.version=1.0
stax.impl.artifactid=wstx
stax.impl.groupid=woodstox
stax.impl.version=asl-2.9.3
stax_utils.version=20060501
wsdl4j.version=1.5.2
wss4j.version=1.5.0
xalan.version=2.7.0
xbean.version=2.1.0
xerces.version=2.7.1
xml_apis.version=1.3.02
XmlSchema.version=1.0.2
xmlsec.version=1.3.0
xmlunit.version=1.0

# ------------------------------------------------------------------------
# M A V E N  J A R  O V E R R I D E
# ------------------------------------------------------------------------
maven.jar.override =off

# ------------------------------------------------------------------------
# Jars set explicity by path.
# ------------------------------------------------------------------------

dependencies.dir=${basedir}/../../lib

maven.jar.annogen=${dependencies.dir}/annogen-${annogen.version}.jar
maven.jar.ant=${dependencies.dir}/ant-${ant.version}.jar
maven.jar.axiom-api=${dependencies.dir}/axiom-api-${axiom.version}.jar
maven.jar.axiom-dom=${dependencies.dir}/axiom-dom-${axiom.version}.jar
maven.jar.axiom-impl=${dependencies.dir}/axiom-impl-${axiom.version}.jar
maven.jar.backport-util-concurrent=${dependencies.dir}/backport-util-concurrent-${backport_util_concurrent.version}.jar
maven.jar.bcel=${dependencies.dir}/bcel-${bcel.version}.jar
maven.jar.bcprov=${dependencies.dir}/bcprov-${bcprov.version}.jar
maven.jar.commons-codec=${dependencies.dir}/commons-codec-${commons.codec.version}.jar
maven.jar.commons-discovery=${dependencies.dir}/commons-discovery-${commons.discovery.version}.jar
maven.jar.commons-fileupload=${dependencies.dir}/commons-fileupload-${commons.fileupload.version}.jar
maven.jar.commons-httpclient=${dependencies.dir}/commons-httpclient-${commons.httpclient.version}.jar
maven.jar.commons-logging=${dependencies.dir}/commons-logging-${commons.logging.version}.jar
maven.jar.geronimo-spec-activation=${dependencies.dir}/geronimo-spec-activation-${geronimo.spec.activation.version}.jar
maven.jar.geronimo-spec-javamail=${dependencies.dir}/geronimo-spec-javamail-${geronimo.spec.javamail.version}.jar
maven.jar.geronimo-spec-jms=${dependencies.dir}/geronimo-spec-jms-${geronimo.spec.jms.version}.jar
maven.jar.groovy-all=${dependencies.dir}/groovy-all-${groovy.all.version}.jar
maven.jar.jaxen=${dependencies.dir}/jaxen-${jaxen.version}.jar
maven.jar.jaxme2=${dependencies.dir}/jaxme2-${jaxme.version}.jar
maven.jar.jaxmeapi=${dependencies.dir}/jaxmeapi-${jaxme.version}.jar
maven.jar.jaxmejs=${dependencies.dir}/jaxmejs-${jaxme.version}.jar
maven.jar.jaxmexs=${dependencies.dir}/jaxmexs-${jaxme.version}.jar
maven.jar.jibx-bind=${dependencies.dir}/jibx-bind-${jibx.version}.jar
maven.jar.jibx-run=${dependencies.dir}/jibx-run-${jibx.version}.jar
maven.jar.junit=${dependencies.dir}/junit-${junit.version}.jar
maven.jar.log4j=${dependencies.dir}/log4j-${log4j.version}.jar
maven.jar.maven-itest-plugin=${dependencies.dir}/maven-itest-plugin-${maven.itest.plugin.version}.jar
maven.jar.opensaml=${dependencies.dir}/opensaml-${opensaml.version}.jar
maven.jar.policy=${dependencies.dir}/neethi-${policy.version}.jar
maven.jar.servletapi=${dependencies.dir}/servletapi-${servletapi.version}.jar
maven.jar.stax-api=${dependencies.dir}/stax-api-${stax.api.version}.jar
maven.jar.wsdl4j=${dependencies.dir}/wsdl4j-${wsdl4j.version}.jar
maven.jar.wss4j=${dependencies.dir}/wss4j-${wss4j.version}.jar
maven.jar.wstx=${dependencies.dir}/${stax.impl.artifactid}-${stax.impl.version}.jar
maven.jar.xalan=${dependencies.dir}/xalan-${xalan.version}.jar
maven.jar.xbean=${dependencies.dir}/xbean-${xbean.version}.jar
maven.jar.xercesImpl=${dependencies.dir}/xercesImpl-${xerces.version}.jar
maven.jar.xml-apis=${dependencies.dir}/xml-apis-${xml_apis.version}.jar
maven.jar.XmlSchema=${dependencies.dir}/XmlSchema-${XmlSchema.version}.jar
maven.jar.xmlsec=${dependencies.dir}/xmlsec-${xmlsec.version}.jar
maven.jar.xmlunit=${dependencies.dir}/xmlunit-${xmlunit.version}.jar

# -------------------------------------------------------------------
#                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
