# -------------------------------------------------------------------
# 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.repo.remote=http://www.apache.org/dist/java-repository/
maven.multiproject.includes=modules/*/project.xml
maven.multiproject.excludes=modules/tool/project.xml

maven.xdoc.date=left
## maven.xdoc.version=${pom.currentVersion}

maven.junit.jvmargs=
maven.junit.fork=true
maven.compile.optimize=false
maven.compile.fork=true

