# -------------------------------------------------------------------
# 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.includes=modules/*/project.xml
maven.repo.remote=http://cvs.apache.org/repository/, http://www.ibiblio.org/maven,http://www.apache.org/dist/java-repository/

maven.xdoc.date=left
## maven.xdoc.version=${pom.currentVersion}

maven.junit.jvmargs=
maven.junit.fork=true
maven.compile.optimize=false
maven.compile.fork=true


#
#  project dependencies
#

axis_version=1.2.1
geronimo_spec_activiation_version=1.0.2-rc4
juddi_version=0.9rc4
jdom_version=1.0
clogging_version=1.0.4
commons_discovery_version=SNAPSHOT

