<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Copyright 2001-2009 The Apache Software Foundation.
 *
 * Licensed 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/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
        <groupId>org.apache.juddi.juddi-docs</groupId>
        <artifactId>juddi-docs</artifactId>
        <version>3.3.6</version>
    </parent>
	<packaging>pom</packaging>
	<groupId>org.apache.juddi.juddi-docs</groupId>
	<artifactId>juddi-guide-parent</artifactId>
	<name>jUDDI Guide Parent</name>
	<description>jUDDI (pronounced "Judy") is an open source Java
		implementation of the Universal Description, Discovery, and
		Integration (UDDI) specification for Web Services.</description>
	<url>http://juddi.apache.org/</url>
	
	<prerequisites>
      <maven>3.0.3</maven>
    </prerequisites>
	
	<modules>
		<module>Guide</module>
		<module>ClientGuide</module>
    </modules>

</project>
