<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->
<properties>
<!-- The names of plugins that are required to build the project
       comma separated list (no spaces)
       Run "forrest available-plugins" for a list of plug-ins currently available -->
<!-- This is an in development, undocumented feature. You must still provide this information
       in forrest.properties until further notice - ony use this property if you know why you 
       need to -->
  <property name="project.required.plugins"
    value="org.apache.forrest.plugin.input.projectInfo,org.apache.forrest.plugin.output.pdf"/>
<!-- pluginInfo property overrides -->
<!-- Indicate if the committers list should be included. Values are true
       or false. -->
  <property name="projectInfo.changes.includeCommitterList" value="false"/>
  <property name="projectInfo.svn.ext" value=".svn.xml"/>
  <property name="projectInfo.project.fullname" value="Apache Forrest ProjectInfo"/>
  <property name="projectInfo.project.url" value="http://forrest.apache.org/pluginDocs/plugins_0_90/index.html"/>
</properties>
