<?xml version="1.0"?>
<!--
  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.
-->
<!--+
    | Gump descriptor for Apache Forrest 
    +-->
<module name="xml-forrest">
  <url href="http://forrest.apache.org/"/>
  <svn repository="forrest" dir="trunk/"/>
  <mailing-lists>
    <mailing-list mail="dev@forrest.apache.org"
       subscribe="dev-subscribe@forrest.apache.org"
       unsubscribe="dev-unsubscribe@forrest.apache.org"
       user="developer"/>
  </mailing-lists>
  <description>
    Apache Forrest is an XML standards-oriented documentation framework based
    upon Apache Cocoon.
  </description>
  <detailed>
     Apache Forrest is an XML standards-oriented documentation framework
     based upon Apache Cocoon, providing XSLT stylesheets and schemas,
     images and other resources. Forrest uses these to render the source
     content into a website via command-line, robot, or dynamic application.
  </detailed>
  <what>
    <goal>Standards-based documentation framework.</goal>
  </what>
  <why>If you ever participated in ASF open development you know why: there is always the feeling that you are left on your own, that each project, effort, community mail list and invidual has to struggle to keep up with the others    and to keep coherence. This effort was started by those who believe that a better and more coherent technical infrastructure is a first step in the right direction.</why>
  <licence>
    This software is released under the Apache License, Version 2.0 -
    For detailed legal and licensing issues, please read the LICENSE.txt,
    NOTICE.txt and the files in the /legal directory.
  </licence>
  <credits>
    <credit>Apache Cocoon (http://cocoon.apache.org/)</credit>
    <credit>Apache FOP (http://xml.apache.org/fop/)</credit>
    <credit>Apache Batik (http://xml.apache.org/batik</credit>
    <credit>Apache Ant (http://ant.apache.org/)</credit>
    <credit>Chaperon (http://chaperon.sourceforge.net/)</credit>
  </credits>
  <project name="xml-forrest">
    <version fix="0" major="0" minor="7" tag="-dev"/>
    <package>org.apache.forrest</package>
    <ant/>
<!-- Project jars Forrest build strictly depends on -->
<!-- needed for build -->
    <depend project="jakarta-ant"/>
    <depend project="ant-contrib"/>
    <depend project="xml-xerces"/>
    <depend project="xml-xalan2"/>
    <depend project="cocoon" inherit="all"/>
    <depend project="jakarta-oro"/>
    <depend project="nekopull"/>
<!-- Project jars Forrest build can optionally use  -->
<!-- <option project="xxx"/> -->
<!-- Work dirs to be included in classpath  -->
    <work nested="build/components/classes"/>
    <work nested="build/scratchpad/classes"/>
    <home nested="build"/>
<!-- jars - the result of the build  -->
    <jar id="components" name="xml-forrest.jar"/>
    <jar id="scratchpad" name="xml-forrest-scratchpad.jar"/>
<!-- Javadocs - location in the build dirs  -->
<!--    <javadoc parent="build/javadocs"/>   -->
<!-- Getting ready for automatic site updates
    <deliver fromdir="build/xml-forrest/docs"
             tosite="xml-apache-org"
             todir="forrest/" />
    -->
    <nag from="nicolaken@apache.org" to="dev@forrest.apache.org"/>
  </project>
  <project name="nekopull">
    <url href="http://www.apache.org/~andyc/neko/doc/pull/index.html"/>
    <description>
      NekoPull is an XML document parsing API that extends the Xerces Native
      Interface (XNI) to provide pull parsing functionality.
    </description>
    <home nested="lib/core"/>
    <jar name="nekopull-0.2.4.jar"/>
  </project>
  <project name="xml-forrest-forrestbar">
    <ant target="forrestbar"/>
    <home nested="build"/>
    <depend project="jakarta-ant"/>
    <depend project="xml-xerces"/>
    <jar id="forrestbar" name="forrestbar.xpi"/>
    <nag from="nicolaken@apache.org" to="dev@forrest.apache.org"/>
  </project>
  <project name="xml-forrest-scratchpad-forrestdoc">
    <ant basedir="scratchpad/forrestdoc" target="jar" >
      <property name="version" value="@@DATE@@"/>
    </ant>
    <work nested="scratchpad/forrestdoc/build/tools/ant"/>
    <home nested="scratchpad/forrestdoc/dist"/>
    <depend project="jakarta-ant"/>
    <depend project="ant-contrib"/>
    <depend project="xml-xerces"/>
    <depend project="xml-xalan2"/>
    <depend project="antlr"/>
    <jar id="forrestdoc-anttools" name="xml-forrest-scratchpad-forrestdoc-anttools-@@DATE@@.jar"/>
    <jar id="forrestdoc" name="xml-forrest-scratchpad-forrestdoc-@@DATE@@.jar"/>
    <nag from="nicolaken@apache.org" to="dev@forrest.apache.org"/>
  </project>
  <project name="xml-forrest-scratchpad-forrestdoc-autotest">
    <ant basedir="scratchpad/forrestdoc" target="project" />
    <home nested="scratchpad/forrestdoc/build"/>
    <depend project="xml-forrest-scratchpad-forrestdoc"/>
    <depend project="jakarta-ant"/>
    <depend project="ant-contrib"/>
    <depend project="xml-xerces"/>
    <depend project="xml-xalan2"/>
    <depend project="antlr"/>
    <javadoc parent="scratchpad/forrestdoc/build/forrestdoc/forrestdoc"/>
    <nag from="nicolaken@apache.org" to="dev@forrest.apache.org"/>
  </project>
</module>
