<?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.
-->

<project xmlns="http://maven.apache.org/DECORATION/1.3.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.3.0 http://maven.apache.org/xsd/decoration-1.3.0.xsd"
  name="dist-tool">
    <body>
        <menu name="Overwiev">
            <item name="Introduction" href="index.html" />
            <item name="Configuration" href="dist-tool.conf.html" />
        </menu>        
        <menu name="Dist Tool Checks">
            <item name="Check Source Release" href="dist-tool-check-source-release.html" />
            <item name="Check Sites" href="dist-tool-check-site.html" />
            <item name="Check Index Pages" href="dist-tool-check-index-page.html" />
        </menu>
        <menu name="Dist Tool Informations">
            <item name="List Plugins Prerequisites" href="dist-tool-prerequisites.html" />
        </menu>
        <menu name="for dev">
            <item name="TODO" href="todo.html" />
        </menu>
        <menu ref="reports"/>
    </body>
</project>
