#	 ***************************************************************
#	 * Licensed to the Apache Software Foundation (ASF) under one
#	 * or more contributor license agreements.  See the NOTICE file
#	 * distributed with this work for additional information
#	 * regarding copyright ownership.  The ASF licenses this file
#	 * to you 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.
#	 ***************************************************************
lib.dir=${basedir}/lib
src.dir=${basedir}/src/java
test.dir=${basedir}/test/java
example.dir=${basedir}/src/example
build.dir=${basedir}/build
classes.build.dir=${basedir}/build/classes
core.classes.build.dir=${classes.build.dir}/core
bootstrap.classes.build.dir=${classes.build.dir}/bootstrap
ant.classes.build.dir=${classes.build.dir}/ant
optional.classes.build.dir=${classes.build.dir}/optional
all.classes.build.dir=${classes.build.dir}/all
test.build.dir=${basedir}/build/test
artifacts.build.dir=${basedir}/build/artifact
distrib.dir=${basedir}/build/distrib
doc.build.dir=${basedir}/build/doc
reports.dir=${doc.build.dir}/reports
test.xml.dir=${build.dir}/test-report
test.report.dir=${reports.dir}/test
coverage.report.dir=${reports.dir}/coverage
javadoc.build.dir=${reports.dir}/api
ivy.report.dir=${reports.dir}/ivy
doc.src.dir=${basedir}/doc
checkstyle.report.dir=${reports.dir}/checkstyle
checkstyle.src.dir=${basedir}/src/etc/checkstyle
rat.report.dir=${reports.dir}/rat

ivy.minimum.javaversion=1.5
debug.mode=on
ivy.install.version=1.4.1

#status=integration

test.class.pattern = *Test

source.. = src/java/
output.. = bin/
bin.includes = META-INF/,\
               .
