<!DOCTYPE html>
<!--
   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

       https://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.
-->
<html lang="en">

<head>
<link rel="stylesheet" type="text/css" href="stylesheets/style.css"/>
<title>Apache Ant User Manual</title>
<base target="mainFrame"/>
</head>

<body>

<h2>Table of Contents</h2>
<ul class="inlinelist">
<li><a href="intro.html">Introduction</a></li>
<li><a href="installlist.html" target="navFrame">Installing Apache Ant</a></li>
<li><a href="usinglist.html" target="navFrame">Using Apache Ant</a></li>
<li><a href="runninglist.html" target="navFrame">Running Apache Ant</a></li>
<li><a href="anttaskslist.html" target="navFrame">Ant Tasks</a></li>
<li><a href="conceptstypeslist.html" target="navFrame">Concepts and Types</a></li>
<li><a href="listeners.html" target="mainFrame">Loggers &amp; Listeners</a></li>
<li><a href="ide.html" target="navFrame">Editor/IDE Integration</a></li>
<li><a href="developlist.html" target="navFrame">Developing with Ant</a></li>
<li><a href="tutorials.html" target="navFrame">Tutorials</a></li>
<li><a href="api/index.html" target="_top">Ant API</a></li>
<li><a href="LICENSE">License</a></li>
<li><a href="feedback.html">Feedback and Troubleshooting</a></li>
</ul>

<ul class="inlinelist">
<li><a href="credits.html">Authors</a></li>
</ul>

</body>
</html>
