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

# antlr configuration
maven.antlr.grammars=openldap.g
maven.antlr.src.dir=${basedir}/src/main/antlr

# schema configuration
maven.ldap.server.schema.dir=src/main/schema
maven.ldap.server.schemas=core,java,inetorgperson

maven.ldap.server.schema.deps.core=system
maven.ldap.server.schema.owner.core=cn=admin,ou=system

maven.ldap.server.schema.deps.java=system,core
maven.ldap.server.schema.owner.java=cn=admin,ou=system
maven.ldap.server.schema.package.java=org.apache.ldap.server.schema.optional

maven.ldap.server.schema.deps.inetorgperson=system,core

maven.multiproject.type=plugin
maven.xdoc.includeProjectDocumentation=yes
maven.license.licenseFile=${basedir}/../LICENSE.txt

maven.eclipse.classpath.include=${basedir}/target/antlr

