<?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 jUDDI">

    <bannerLeft>
        <name>Apache jUDDI</name>
        <src>images/project-logo.gif</src>
        <href>juddi.apache.org</href>
    </bannerLeft>
    <bannerRight>
    <src>images/juddi.gif</src>
  </bannerRight>
		<skin>
		<groupId>org.apache.maven.skins</groupId>
		<artifactId>maven-fluido-skin</artifactId>
		<version>1.6</version>
	  </skin>

    <publishDate format="dd MMM yyyy" position="right"/>
	 <custom>
    <fluidoSkin>
		<googleSearch>
			<sitesearch/>
		  </googleSearch>
		   <sourceLineNumbersEnabled>true</sourceLineNumbersEnabled>
		   <gitHub>
			<projectId>apache/maven-skins</projectId>
			<ribbonOrientation>right</ribbonOrientation>
			<ribbonColor>black</ribbonColor>
		  </gitHub>
		  <topBarEnabled>false</topBarEnabled>
		  <sideBarEnabled>true</sideBarEnabled>
    </fluidoSkin>
  </custom>
  
  
    <body>
        <breadcrumbs>
      		<item name="Apache" href="http://www.apache.org/"/>
    	</breadcrumbs>

        <menu name="Apache jUDDI">
            <item name="Welcome" href="index.html"/>
            <item name="Get jUDDI">
                <item name="Releases" href="releases.html"/>
                <item name="Source Code" href="source-repository.html"/>
            </item>
            <item name="Participation" href="participate.html" />
            <item name="Documentation">
                <item name="jUDDI Docs" href="docs.html"/>
                <item name="Wiki" href="http://wiki.apache.org/juddi"/>
                <item name="UDDI Library" href="library.html" />
                <item name="Javadocs v2" href="apidocs2/index.html"/>
                <item name="Javadocs v3" href="apidocs/index.html"/>
                <item name="XRef v3" href="xref/index.html"/>
            </item>
            <item name="Project Information">
                <item name="Project Information" href="project-info.html"/>
                <item name="Mailing Lists" href="mail-lists.html"/>
                <item name="jUDDI Blog" href="http://apachejuddi.blogspot.com/" />
                <item name="Issue Tracking" href="issue-tracking.html"/>
                <item name="Dependencies" href="dependencies.html"/>
                <item name="Project Team" href="team-list.html"/>
                <item name="Project Summary" href="project-summary.html"/>
            </item>
            <item name="Subprojects">
    			<item name="Apache Scout" href="http://juddi.apache.org/scout/" />
  			</item>
  			<item name="Misc">
    			<item name="Who We Are" href="who.html"/>
    			<item name="Committer Notes" href="committers.html" />
    			<item name="Sponsors" href="thanks.html"/>
    			<item name="Legal" href="legal.html" />
    			<item name="License" href="license.html" />
  			</item>
        </menu>

    </body>
</project>

