<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
 * 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 name="Apache MyFaces Buildtools">
  <bannerLeft>
    <name>Apache MyFaces</name>
    <src>img/banners/MyFaces_logo.jpg</src>
    <href>http://myfaces.apache.org/index.html</href>
  </bannerLeft>

  <bannerRight>
    <name>Apache Banner</name>
    <src>img/banners/apache_banner.png</src>
    <href>http://www.apache.org/</href>
  </bannerRight>  

  <publishDate format="dd MMM yyyy"/>

  <skin>
    <groupId>org.apache.myfaces.maven</groupId>
    <artifactId>myfaces-site-skin</artifactId>
    <version>1-SNAPSHOT</version>
  </skin>

  <body>
    <links>
      <item name="Apache" href="http://www.apache.org"/>
      <item name="MyFaces" href="http://myfaces.apache.org/index.html"/>
    </links>

    <menu name="Apache MyFaces" inherit="top">
      <item name="Overview"       href="http://myfaces.apache.org/index.html"/>
      <item name="Download"       href="http://myfaces.apache.org/download.html"/>
    </menu>

    <menu name="Documentation">
      <item name="About"         href="index.html"/>
    </menu>

    <menu ref="reports"/>
	
    <menu name="Available Modules" inherit="bottom">
      <item name="Apache MyFaces Buildtools Maven2 Builder Annotations"      href="http://myfaces.apache.org/build-tools/plugins/myfaces-builder-annotations/index.html"/>
      <item name="Apache MyFaces Buildtools Maven2 Builder Plugin"           href="http://myfaces.apache.org/build-tools/plugins/myfaces-builder-plugin/index.html"/>
      <item name="Apache MyFaces Buildtools Maven2 Faces Plugin"             href="http://myfaces.apache.org/build-tools/plugins/myfaces-faces-plugin/index.html"/>
      <item name="Apache MyFaces Buildtools Maven2 i18n Plugin"              href="http://myfaces.apache.org/build-tools/plugins/myfaces-i18n-plugin/index.html"/>
      <item name="Apache MyFaces Buildtools Maven2 Javacc Plugin"            href="http://myfaces.apache.org/build-tools/plugins/myfaces-javacc-plugin/index.html"/>
      <item name="Apache MyFaces Buildtools Maven2 Javascript Plugin"        href="http://myfaces.apache.org/build-tools/plugins/myfaces-javascript-plugin/index.html"/>
      <item name="Apache MyFaces Buildtools Maven2 JDev Plugin"              href="http://myfaces.apache.org/build-tools/plugins/myfaces-jdev-plugin/index.html"/>
      <item name="Apache MyFaces Buildtools Maven2 Tag Documentation Report" href="http://myfaces.apache.org/build-tools/plugins/myfaces-tagdoc-plugin/index.html"/>
      <item name="Apache MyFaces Buildtools Maven2 Wagon Plugin"             href="http://myfaces.apache.org/build-tools/plugins/myfaces-wagon-plugin/index.html"/>
      <item name="Apache MyFaces Buildtools Maven2 XRTS Plugin"              href="http://myfaces.apache.org/build-tools/plugins/myfaces-xrts-plugin/index.html"/>
    </menu>

    <menu name="Foundation" inherit="bottom">
      <item name="ASF"            href="http://www.apache.org/" />
      <item name="Sponsorship"    href="http://www.apache.org/foundation/sponsorship.html" />
      <item name="Thanks"         href="http://www.apache.org/foundation/thanks.html" />
    </menu>
  </body>
</project>
