<?xml version="1.0"?>
<!--
  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.
-->
<module name="xml-forrest">

    <url href="http://xml.apache.org/forrest/"/>

	<svn repository="xml-svn" dir="forrest/trunk/"/>
    <mailing-lists>
        <mailing-list mail="forrest-dev@xml.apache.org"
             subscribe="forrest-dev-subscribe@xml.apache.org"
             unsubscribe="forrest-dev-unsubscribe@xml.apache.org"
             user="developer"/>
    </mailing-lists>
    <description>
     Forrest is an XML standards-oriented project documentation framework based
     on Apache Cocoon.
    </description>
    <detailed>
      Forrest is an XML standards-oriented project documentation
      framework based on Apache Cocoon, providing XSLT stylesheets and schemas,
      images and other resources. Forrest uses these to render the XML source
      content into a website via command-line, robot, or a dynamic web
    </detailed>
    <what>
        <goal>Standards-based site 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 Public License 1.1.
           For detailed legal and licensing issues, please read the LICENSE.* 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>
           <credit>This product includes software developed by CollabNet (http://www.Collab.Net/).</credit>
           <credit>Thanks to Tigris Style for the wonderful skin style.</credit>
    </credits>
    <project name="xml-forrest">
        <version fix="0" major="0" minor="6" 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 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="forrest-dev@xml.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.3.jar"/>
    </project>

    <project name="xml-forrest-forrestbar">

        <ant target="forrestbar"/>

        <home nested="build"/>
        <depend project="jakarta-ant"/>
        <depend project="xml-xerces"/>

    <!-- jars - the result of the build  -->
        <jar id="forrestbar" name="forrestbar.xpi"/>

       <nag from="nicolaken@apache.org" to="forrest-dev@xml.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="forrest-dev@xml.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="forrest-dev@xml.apache.org"/>

    </project>
        
</module>


