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

# checkstyle settings
maven.checkstyle.properties = ${basedir}/../jdo_checks.xml
maven.checkstyle.excludes = \
org/apache/jdo/impl/jdoql/jdoqlc/*TokenTypes.java,\
org/apache/jdo/impl/jdoql/jdoqlc/JDOQLParser.java, \
org/apache/jdo/impl/jdoql/jdoqlc/JDOQLLexer.java, \
org/apache/jdo/impl/jdoql/jdoqlc/Semantic.java, \
org/apache/jdo/impl/jdoql/jdoqlc/Optimizer.java

jdo.antlr.src.dir = ${basedir}/src/java/org/apache/jdo/impl/jdoql/jdoqlc
