# Copyright 2002-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
# -------------------------------------------------------------------

maven.changelog.factory=org.apache.maven.svnlib.SvnChangeLogFactory

maven.changes.issue.template=%URL%/show_bug.cgi?id=%ISSUE%

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

maven.compile.source=1.3
maven.compile.target=1.3

maven.checkstyle.properties = ${basedir}/fileupload_checks.xml
checkstyle.regexp.header=${basedir}/license-header.txt

maven.pmd.rulesetfiles=fileupload_basic.xml,rulesets/unusedcode.xml,rulesets/imports.xml

maven.javadoc.additionalparam=-tag todo:a:"To Do:"
maven.linkcheck.enable=true

# Ostensibly, changes since the FileUpload 1.0 release at SVN revision 133359.
# Unfortunately, it doesn't work, which is why it's commented out.
# I guess I'll have to compile the release notes without Maven's help.
# (The plugin needs to support SVN revision numbers, which it doesn't today.)
#maven.changelog.type = date
#maven.changelog.date = 2003-06-24

# documentation properties
maven.xdoc.jsl=../commons-build/commons-site.jsl
maven.xdoc.date=left
maven.xdoc.version=${pom.currentVersion}
maven.xdoc.developmentProcessUrl=http://jakarta.apache.org/commons/charter.html
maven.xdoc.poweredby.image=maven-feather.png

