# -------------------------------------------------------------------
# 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.xdoc.date=left
## maven.xdoc.version=${pom.currentVersion}

policy.version=1.0-SNAPSHOT
axiom.version=1.0-SNAPSHOT
stax.api.version=1.0
stax.impl.groupid=stax
stax.impl.artifactid=stax
stax.impl.version=1.1.2-dev
axis.wsdl4j.version=1.2
commons.logging.version=1.0.4

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

