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

##
## $Rev$ $Date$
##

# the directory containing the geronimo website in CVS

geronimo.cvs.docdir = ../incubator-site/build/site/projects/geronimo

#module.excludes=axis
#maven.test.failure.ignore=true
#maven.test.skip=true
#maven.itest.skip=true
maven.remote.group=apcvs

#multiproject properties
maven.multiproject.includes=\
plugins/*/project.xml,\
applications/*/project.xml,\
applications/daytrader/*/project.xml,\
modules/*/project.xml,\
openejb/modules/*/project.xml,\
tranql/*/project.xml

maven.multiproject.excludes=\
openejb/modules/connector/project.xml,\
openejb/modules/webadmin/project.xml

maven.idea.project.multiproject.includes=${maven.multiproject.includes}
maven.idea.project.multiproject.excludes=${maven.multiproject.excludes}

#if you are a committer on all these projects use e.g. -Dgeronimo.otherproject.cvs.access=:ext:djencks
#if you are a committer on one of these projects set the appropriate property here or on the command line.
geronimo.otherproject.cvs.access=:pserver:anonymous
geronimo.activemq.cvs.access=${geronimo.otherproject.cvs.access}
geronimo.howl.cvs.access=${geronimo.otherproject.cvs.access}
geronimo.openejb.cvs.access=${geronimo.otherproject.cvs.access}
geronimo.tranql.cvs.access=${geronimo.otherproject.cvs.access}
maven.scm.cvs.quiet=true

maven.username=${user.name}
maven.repo.central=apache.org
maven.repo.central.directory=/www/people.apache.org/repository



