<?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</groupId>
        <artifactId>apache</artifactId>
        <version>6</version>
    </parent>
	<packaging>pom</packaging>
	<groupId>org.apache.juddi</groupId>
	<artifactId>juddi-parent</artifactId>
	<version>3.0.2</version>
	<name>jUDDI_v3 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://ws.apache.org/juddi/</url>
	
	<properties>
        <sourceReleaseAssemblyDescriptor>source-release</sourceReleaseAssemblyDescriptor>
	    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>
	
	<issueManagement>
		<system>JIRA</system>
		<url>http://issues.apache.org/jira/browse/JUDDI</url>
	</issueManagement>
	<ciManagement>
		<system>Buildbot</system>
		<url>http://ci.apache.org/buildbot.html</url>
		<notifiers>
			<notifier>
				<sendOnError>true</sendOnError>
				<sendOnFailure>true</sendOnFailure>
				<sendOnSuccess>true</sendOnSuccess>
				<sendOnWarning>true</sendOnWarning>
				<configuration>
					<address>juddi-dev@ws.apache.org</address>
				</configuration>
			</notifier>
		</notifiers>
	</ciManagement>
	<inceptionYear>2004</inceptionYear>
	<mailingLists>
		<mailingList>
			<name>jUDDI User List</name>
			<subscribe>juddi-user-subscribe@ws.apache.org</subscribe>
			<unsubscribe>juddi-user-unsubscribe@ws.apache.org</unsubscribe>
			<post>juddi-user@ws.apache.org</post>
			<archive>http://mail-archives.apache.org/mod_mbox/ws-juddi-user/</archive>
		</mailingList>
		<mailingList>
			<name>jUDDI Developer List</name>
			<subscribe>juddi-dev-subscribe@ws.apache.org</subscribe>
			<unsubscribe>juddi-dev-unsubscribe@ws.apache.org</unsubscribe>
			<post>juddi-dev@ws.apache.org</post>
			<archive>http://mail-archives.apache.org/mod_mbox/ws-juddi-dev/</archive>
		</mailingList>
		<mailingList>
			<name>jUDDI SVN List</name>
			<subscribe>juddi-cvs-subscribe@ws.apache.org</subscribe>
			<unsubscribe>juddi-cvs-unsubscribe@ws.apache.org</unsubscribe>
			<post>juddi-cvs@ws.apache.org</post>
			<archive>http://mail-archives.apache.org/mod_mbox/ws-juddi-cvs/</archive>
		</mailingList>
	</mailingLists>
	<developers>
		<developer>
			<id>kstam</id>
			<name>Kurt Stam</name>
			<email>kstam AT apache.org</email>
			<organization>ASF</organization>
		</developer>
		<developer>
			<id>jfaath</id>
			<name>Jeffrey Faath</name>
			<email>jfaath AT apache.org</email>
			<url>http://www.esigma.com</url>
			<organization>ESigma</organization>
		</developer>
		<developer>
			<id>tcunning</id>
			<name>Tom Cunningham</name>
			<email>tcunning AT apache.org</email>
			<url>http://www.jboss.org/jbossesb</url>
			<organization>JBoss/Red Hat</organization>
		</developer>
		<developer>
			<id>sviens</id>
			<name>Steve Viens</name>
			<email>steve AT viens.net</email>
			<url>http://www.viens.net</url>
			<organization>ASF</organization>
		</developer>
	</developers>
	<contributors>
		<contributor>
			<name>Ken Wilson</name>
			<organization>Dynamic Site Design</organization>
			<url>http://www.dynamicsitedesign.com</url>
		</contributor>
		<contributor>
			<name>Jeremi Thebeau</name>
			<organization>Xceptance Software Technologies</organization>
			<url>http://www.xceptance.com</url>
		</contributor>
	</contributors>
	<licenses>
		<license>
			<name>The Apache Software License, Version 2.0</name>
			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
			<distribution>repo</distribution>
		</license>
	</licenses>
	<scm>
		<connection>scm:svn:http://svn.apache.org/repos/asf/webservices/juddi/tags/juddi-3.0.2</connection>
		<developerConnection>scm:svn:https://svn.apache.org/repos/asf/webservices/juddi/tags/juddi-3.0.2</developerConnection>
		<url>http://svn.apache.org/viewcvs.cgi/webservices/juddi/tags/juddi-3.0.2</url>
	</scm>
	    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.2-beta-4</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.5</source>
                        <target>1.5</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <configuration>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                        <preparationGoals>clean install</preparationGoals>
                        <goals>deploy</goals>
                        <releaseProfiles>apache-release</releaseProfiles>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <version>2.0.0</version>
                    <extensions>true</extensions>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>ianal-maven-plugin</artifactId>
                    <version>1.0-alpha-1</version>
                </plugin>
                <plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-site-plugin</artifactId>
					<version>2.0.1</version>
					
				</plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>ianal-maven-plugin</artifactId>
            </plugin>
            <plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-site-plugin</artifactId>
				<version>2.0.1</version>
			</plugin>
        </plugins>
    </build>
	<reporting>
		<plugins>
			<plugin>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>2.6.1</version>
				
			</plugin>
			<plugin>
	            <groupId>org.apache.maven.plugins</groupId>
	            <artifactId>maven-project-info-reports-plugin</artifactId>
	            <version>2.1.2</version>
	        </plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>jdepend-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>jxr-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</reporting>
	<modules>
		<module>uddi-ws</module>
		<module>uddi-tck-base</module>
		<module>juddi-client</module>
		<module>juddi-core</module>
		<module>juddiv3-war</module>
		<module>juddi-cxf</module>
		<module>juddiv3-samples</module>
		<module>juddi-tomcat</module>
		<module>uddi-tck</module>
		<module>docs</module>
        <!-- should these be an a profile? -->
        <!--<module>juddi-console</module>-->
        <!-- requires some artifacts from the apache-release profile, so put it there -->
        <!--<module>juddi-dist</module>-->
	</modules>
	<distributionManagement>
	    <site>
			<id>website</id>
			<url>scpexe://people.apache.org/www/ws.apache.org/juddi/</url>
		</site>
	</distributionManagement>
	<dependencies />
	<repositories>
		<repository>
			<id>maven2-repository.dev.java.net</id>
			<name>Java.net Maven 2 Repository</name>
			<url>http://download.java.net/maven/2</url>
			<layout>default</layout>
		</repository>
		<repository>
			<id>apache.nexus</id>
			<name>Apache NEXUS Maven 2 Repository</name>
			<url>https://repository.apache.org/content/repositories/releases/</url>
			<layout>default</layout>
			<snapshots> 
				<enabled>false</enabled> 
			</snapshots>
		</repository>
		<repository>
			<id>jboss</id>
			<name>JBoss Repository</name>
			<url>http://repository.jboss.org/maven2</url>	
			<layout>default</layout>
		</repository>
	</repositories>
	<pluginRepositories>
		<pluginRepository>
			<id>maven2-repository.dev.java.net</id>
			<url>http://download.java.net/maven/2</url>
		</pluginRepository>
	</pluginRepositories>
	 <profiles>
        <!-- START SNIPPET: release-profile -->
        <!-- this is borrowed from an nov 2009 apache-7 pom release attempt-->
        <profile>
            <id>apache-release</id>
            <modules>
                <!-- this requires some artifacts generated by apache-release profile (source, javadoc) -->
                <module>juddi-dist</module>
                <module>juddi-console</module>
            </modules>
            <build>
                <plugins>
                    <!-- Create a source-release artifact that contains the fully buildable
             project directory source structure. This is the artifact which is
             the official subject of any release vote. -->
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <dependencies>
                            <dependency>
                                <groupId>org.apache.apache.resources</groupId>
                                <artifactId>apache-source-release-assembly-descriptor</artifactId>
                                <version>1.0.1</version>
                            </dependency>
                            <dependency>
                                <!-- NOTE: The fix for PLXUTILS-120 is crucial for the new assembly descriptor -->
                                <groupId>org.codehaus.plexus</groupId>
                                <artifactId>plexus-utils</artifactId>
                                <version>2.0.1</version>
                            </dependency>
                        </dependencies>
                        <executions>
                            <execution>
                                <id>source-release-assembly</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
                                    <descriptorRefs>
                                        <descriptorRef>${sourceReleaseAssemblyDescriptor}</descriptorRef>
                                    </descriptorRefs>
                                    <tarLongFileFormat>gnu</tarLongFileFormat>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <!-- END SNIPPET: release-profile -->
    </profiles>
</project>
