<?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>9</version>
    </parent>
	<packaging>pom</packaging>
	<groupId>org.apache.juddi</groupId>
	<artifactId>juddi-style-parent</artifactId>
	<version>1.0.1-SNAPSHOT</version>
	<name>Apache jUDDI_v3 Style Parent</name>
	<description>Site and Docbook styles for the jUDDI project</description>
	<url>http://juddi.apache.org/</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>user-subscribe@juddi.apache.org</subscribe>
			<unsubscribe>user-unsubscribe@juddi.apache.org</unsubscribe>
			<post>user@juddi.apache.org</post>
			<archive>http://mail-archives.apache.org/mod_mbox/juddi-user/</archive>
		</mailingList>
		<mailingList>
			<name>jUDDI Developer List</name>
			<subscribe>dev-subscribe@juddi.apache.org</subscribe>
			<unsubscribe>dev-unsubscribe@juddi.apache.org</unsubscribe>
			<post>dev@juddi.apache.org</post>
			<archive>http://mail-archives.apache.org/mod_mbox/juddi-dev/</archive>
		</mailingList>
		<mailingList>
			<name>jUDDI SVN List</name>
			<subscribe>cvs-subscribe@juddi.apache.org</subscribe>
			<unsubscribe>cvs-unsubscribe@juddi.apache.org</unsubscribe>
			<post>cvs@juddi.apache.org</post>
			<archive>http://mail-archives.apache.org/mod_mbox/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/juddi/styles/trunk</connection>
		<developerConnection>scm:svn:https://svn.apache.org/repos/asf/juddi/styles/trunk</developerConnection>
		<url>http://svn.apache.org/viewcvs.cgi/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>