#
#  Copyright 2004 the mime4j project
# 
#  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.
#

# GENERAL

# Display the date on the mime4j web site
maven.xdoc.date = left

# Display the mime4j version the web site is documenting
maven.xdoc.version = ${pom.currentVersion}

# Links to resolve external Java classes in Javadoc
maven.javadoc.links = http://java.sun.com/j2se/1.4.2/docs/api/

maven.scm.method = svn

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