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

# -------------------------------------------------------------------
# P R O J E C T  P R O P E R T I E S
#
# $Id$
#
# Do not change this file. Please use build.properties in this directory
# to do site or installation specific changes to the project build.
# -------------------------------------------------------------------
maven.multiproject.type=jar

#========================================================================
# You can uncomment this if you're willing to use the unofficial
# Turbine-specific jar repository at the Turbine site. This will
# contain all the jars needed to build Turbine, even if a jar
# is missing on ibiblio
#========================================================================
maven.repo.remote=http://www.ibiblio.org/maven/,http://jakarta.apache.org/turbine/repo

maven.checkstyle.format = turbine
#maven.home = ${user.home}/maven

# display the date on the site
maven.xdoc.date = left
# Display the version the web site is documenting
maven.xdoc.version = ${pom.currentVersion}

compile.debug = on
compile.optimize = off
compile.deprecation = off
maven.compile.deprecation = off


# -------------------------------------------------------------------
# N I G H T L Y   B U I L D   P R O P E R T I E S
# -------------------------------------------------------------------

turbine.nightly.dist.dir = \
    /www/jakarta.apache.org/builds/jakarta-turbine/turbine-2/nightly

torque.addGetByNameMethod = true
torque.addIntakeRetrievable = false
torque.retrievableInterface = org.apache.turbine.om.Retrievable
torque.addSaveMethod = true
torque.addTimeStamp = true
torque.basePrefix = Base
torque.complexObjectModel = true
torque.saveException = Exception
torque.useClasspath = true
torque.useManagers = false
torque.omzip.src.base = false
torque.omzip.src.extension = false
torque.omzip.bin.base = false
torque.omzip.bin.extension = false
torque.omzip.deleteFiles = false
torque.generateDeprecated = true
torque.runOnlyOnSchemaChange = false