<?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-style-parent</artifactId>
	<version>1.1-SNAPSHOT</version>
	<name>Apache jUDDI_v3 Style Parent</name>
	<description>Site and Docbook styles for the jUDDI project</description>
	<url>http://ws.apache.org/juddi/</url>
	
	<properties>
        <sourceReleaseAssemblyDescriptor>source-release</sourceReleaseAssemblyDescriptor>
    </properties>
	
	<issueManagement>
		<system>JIRA</system>
		<url>http://issues.apache.org/jira/browse/JUDDI</url>
	</issueManagement>

	<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/styles/trun</connection>
		<developerConnection>scm:svn:https://svn.apache.org/repos/asf/webservices/juddi/styles/trunk</developerConnection>
		<url>http://svn.apache.org/viewcvs.cgi/webservices/juddi/styles/trunk</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>
            </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>
        </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>site</module>
		<module>docbook/juddi-docbook-style</module>
		<module>docbook/juddi-docbook-xslt</module>
	</modules>
	<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>
	</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>
            <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>