<?xml version="1.0"?>
<!--
  Copyright 1999-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.
-->

<!-- $Id: build.xml,v 1.63 2004/03/21 18:35:14 gregor Exp $ -->

<!DOCTYPE project [
<!-- ===========================================================================

                       * =========================== *
                       |  Apache Lenya Build System |
                       * =========================== *

       CVS $Id: build.xml,v 1.63 2004/03/21 18:35:14 gregor Exp $:

    History
    =======
    
    when        Who               What
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    2003-04-16  Gregor J. Rothfuss   Refactoring
    2003-03-01  Michael Wechner      Custom Tasks
    2002-02-05  Giacomo Pati         Revision
    2001-01-06  Marc Liyanage        Initial version

============================================================================ -->

]>

<project default="webapp" basedir="." name="lenya">

  <!-- ==================  Apache Lenya targets  ======================== -->

  <!-- =================================================================== -->
  <!-- Global properties  -->
  <import file="src/targets/properties-build.xml" />
  <!-- Initialization targets  -->
  <import file="src/targets/init-build.xml" />
  <!-- IDE targets             --> 
  <import file="src/targets/ide-build.xml" />
  <!-- Compile targets         --> 
  <import file="src/targets/compile-build.xml" />
  <!-- Documentation targets   --> 
  <import file="src/targets/docs-build.xml" />
  <!-- Web application targets -->
  <import file="src/targets/webapp-build.xml" />
  <!-- Testcases targets       -->
  <import file="src/targets/test-build.xml" />
  <!-- Distribution targets    -->
  <import file="src/targets/dist-build.xml" />
  <!-- Export targets          -->
  <import file="src/targets/export-build.xml" />
  <!-- Publication tests       -->
  <import file="src/targets/publication-test-build.xml" />
  <!-- =================================================================== -->

</project>
