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

<project xmlns="https://maven.apache.org/DECORATION/1.8.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="https://maven.apache.org/DECORATION/1.8.0 https://maven.apache.org/xsd/decoration-1.8.0.xsd">

  <body>
    <menu name="Overview">
      <item name="Introduction" href="index.html"/>
      <item name="JavaDocs" href="testapidocs/org/apache/maven/it/package-summary.html"/>
      <item name="Source Xref" href="xref-test/org/apache/maven/it/package-summary.html"/>
      <!--item name="FAQ" href="faq.html"/-->
      <item name="License" href="http://www.apache.org/licenses/"/>
    </menu>
    <menu name="Results">
      <item name="Bootstrap" href="bootstrap.html"/>
      <item name="Surefire Report" href="surefire-report.html"/>
    </menu>

    <menu ref="parent"/>
    <menu ref="reports"/>
  </body>
</project>
