# 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=lib

src.dir=src
src.java.dir=${src.dir}/main/java
src.test.dir=${src.dir}/test/java
src.resources.dir=${src.dir}/main/resources
src.doc.dir=${src.dir}/main/doc
src.antdoc.dir=${src.dir}/main/antdoc
src.check.dir=${src.dir}/main/checkstyle

build.dir=target
build.java.dir=${build.dir}/classes
build.test.dir=${build.dir}/test
build.antdoc.dir=${build.dir}/antdoc
build.javadoc.dir=${build.dir}/javadoc
build.schemadoc.dir=${build.dir}/schemadoc
build.doc.dir=${build.dir}/doc
build.check.dir=${build.dir}/checkstyle

dist.dir=dist
doc.dir=doc

dist.name=DdlUtils
dist.vendor=Apache Software Foundation
dist.version=1.0
dist.filename.prefix=${dist.name}-${dist.version}
dist.doc.filename.prefix=${dist.name}-${dist.version}-doc
dist.doc.includes=doc/**
dist.src.filename.prefix=${dist.name}-${dist.version}-src
dist.src.includes=.classpath,.project,build*.*,dump-metadata.xml,*.txt,pom.xml,src/**,lib/*,lib/build-only/ant-*.jar,lib/build-only/junit*.jar,doc/**
dist.src.excludes=lib/drivers/**,lib/driver-alternatives/**
dist.bin.filename.prefix=${dist.name}-${dist.version}-bin
dist.bin.includes=dump-metadata.xml,*.txt,pom.xml,dist/${dist.filename.prefix}.jar,lib/*,doc/**
dist.bin.excludes=lib/build-only/**,lib/drivers/**,lib/driver-alternatives/**

checkstyle.version.pattern=\\$Revision.*\\$
checkstyle.author.pattern=\\S
checkstyle.header.file=${src.check.dir}/license-check.txt

test.profile.dir=${src.dir}/test-profiles
test.summary.dir=${src.dir}/test-summary

#
# Documentation properties
#

javadoc.title=${dist.name} ${dist.version} API Documentation
javadoc.footer=Copyright &copy; 2005-2007 Apache Software Foundation. All Rights Reserved.

antdoc.title=${dist.name} ${dist.version} Ant Tasks
antdoc.templates.dir=${src.antdoc.dir}/templates

forrest.antdoc.destdir=${build.doc.dir}/src/documentation/content/ant
forrest.javadoc.destdir=${build.doc.dir}/src/documentation/content/api
forrest.schemadoc.destdir=${build.doc.dir}/src/documentation/content/schema
forrest.output.dir=${build.doc.dir}/build/site
