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

# -------------------------------------------------------------------
# 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 building and deploy. These settings are for deployment to www.apache.org.
# If you are not an Turbine committer, you can safely ignore these. :-)
#
# ========================================================================
maven.repo.remote=http://repo1.maven.org/maven,http://www.ibiblio.org/maven/,http://www.apache.org/dist/java-repository/,http://download.java.net/maven/1
maven.remote.group=apcvs

maven.repo.list=turbine-unreleased

# Repository for official releases
maven.repo.apache=scp://cvs.apache.org
maven.repo.apache.directory=/www/www.apache.org/dist/java-repository

# Repository for alpha, beta, release candidate releases
maven.repo.turbine-unreleased=scp://cvs.apache.org
maven.repo.turbine-unreleased.directory=/www/cvs.apache.org/dist/jakarta/turbine/java-repository

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

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

maven.compile.source = 1.4
maven.compile.target = 1.4
maven.compile.debug = on
maven.compile.optimize = off
maven.compile.deprecation = off
maven.compile.encoding = UTF-8

#
# Add information on compilation options to the Manifest
maven.jar.manifest.attributes.list=X-Compile-Source-JDK,X-Compile-Target-JDK
maven.jar.manifest.attribute.X-Compile-Source-JDK=${maven.compile.source}
maven.jar.manifest.attribute.X-Compile-Target-JDK=${maven.compile.target}

maven.test.ignore.failures=false
maven.junit.fork=true

maven.license.licenseFile = LICENSE.txt

# Checkstyle
maven.checkstyle.properties = conf/turbine-checkstyle.xml
maven.checkstyle.header.file = conf/checkstyle-license.txt

# Changes Plugin
maven.changes.issue.template = http://issues.apache.org/jira/browse/%ISSUE%
maven.changelog.factory = org.apache.maven.svnlib.SvnChangeLogFactory

# No ideology without asking
maven.xdoc.developmentProcessUrl=

# -------------------------------------------------------------------
# C A C T U S  T E S T  P R O P E R T I E S
# -------------------------------------------------------------------

maven.war.src=src/test-cactus/testapp
cactus.home.tomcat4x = c:/java/tomcat
# The below tests don't seem to work at all
cactus.test.fileset.exclude=org.apache.turbine.services.xmlrpc.util.FileHandlerTest,org.apache.turbine.util.velocity.TestVelocityEmail

# -------------------------------------------------------------------
#
# T O R Q U E  C O N F I G U R A T I O N
#
# used to generate the om/peer classes for the security db
# implementation and scheduler
#
# -------------------------------------------------------------------

torque.database = mysql
torque.project = ${pom.artifactId}
torque.java.dir = target/src
torque.sql.dir  = target/sql
torque.schema.dir = target/xml
torque.contextProperties = project.properties
torque.runOnlyOnSchemaChange = true

scheduler.database.name = default
scheduler.package = org.apache.turbine.services.schedule

torque.security.database.name = default
torque.security.package = org.apache.turbine.services.security.torque.om
