<?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</groupId>
		<artifactId>juddi-parent</artifactId>
		<version>3.3.1-SNAPSHOT</version>
	</parent>
	<artifactId>juddi-tomcat</artifactId>
	<name>jUDDI Tomcat Packaging</name>
	<packaging>pom</packaging>
	<dependencies>
		<dependency>
			<groupId>commons-discovery</groupId>
			<artifactId>commons-discovery</artifactId>
			<version>0.2</version>
		</dependency>
<!--		<dependency>
			<artifactId>apache-tomcat</artifactId>
			<groupId>org.apache.juddi.bootstrap</groupId>
			<version>6.0.44</version>
			<type>zip</type>
		</dependency>
-->
<dependency>
	<groupId>org.apache.tomcat</groupId>
	<artifactId>tomcat</artifactId>
	<version>7.0.64</version>
<type>zip</type>

</dependency>


		<dependency>
			<artifactId>juddiv3-war</artifactId>
			<groupId>org.apache.juddi</groupId>
			<version>${project.parent.version}</version>
			<type>war</type>
		</dependency>
		<dependency>
			<artifactId>juddiv3-war-repl</artifactId>
			<groupId>org.apache.juddi</groupId>
			<version>${project.parent.version}</version>
			<type>war</type>
		</dependency>
		<dependency>
            <artifactId>juddi-gui-war</artifactId>
            <groupId>org.apache.juddi</groupId>
            <version>${project.parent.version}</version>
            <type>war</type>
        </dependency>
		<dependency>
			<groupId>org.apache.derby</groupId>
			<artifactId>derby</artifactId>
			<version>10.4.2.0</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.6</version>
		</dependency>
		<dependency>
          <groupId>org.apache.geronimo.specs</groupId>
          <artifactId>geronimo-jaxws_2.2_spec</artifactId>
          <version>1.0</version>
          <type>jar</type>
        </dependency>
		<dependency>
            <groupId>postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>8.2-504.jdbc3</version>
        </dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.13</version>
		</dependency>
            <dependency>
                    <groupId>org.json</groupId>
                    <artifactId>json</artifactId>
                    <version>20090211</version>
            </dependency>
                                    
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<version>2.2</version>
				<executions>
					<execution>
						<id>copy-wars</id>
						<phase>package<!-- or any other valid maven phase --></phase>
						<goals>
							<goal>copy-dependencies</goal>
						</goals>
						<configuration>
							<stripVersion>true</stripVersion>
							<includeGroupIds>org.apache.juddi</includeGroupIds>
							<includeArtifactIds>juddiv3-war,juddiv3-war-repl,juddi-gui-war</includeArtifactIds>
							<outputDirectory>
								${project.build.directory}
							</outputDirectory>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-install-plugin</artifactId>
				<version>2.1</version>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-antrun-plugin</artifactId>
				<version>1.3</version>
				<executions>
					<execution>
						<id>test</id>
						<phase>package</phase>
						<configuration>
							<tasks>
								<property name="compile_classpath" refid="maven.compile.classpath" />
								<property name="runtime_classpath" refid="maven.runtime.classpath" />
								<property name="test_classpath" refid="maven.test.classpath" />
								<property name="plugin_classpath" refid="maven.plugin.classpath" />
								<property name="project.version" value="${project.version}" />
								
								<property name="dependency.log4j.jar" value="${maven.dependency.log4j.log4j.jar.path}" />
								<property name="dependency.mysql.jar" value="${maven.dependency.mysql.mysql-connector-java.jar.path}" />
								<property name="dependency.postgres.jar" value="${maven.dependency.postgresql.postgresql.jar.path}" />
								<property name="dependency.commons-discovery.jar" value="${maven.dependency.commons-discovery.commons-discovery.jar.path}" />
								<property name="dependency.derby.jar" value="${maven.dependency.org.apache.derby.derby.jar.path}" />
								<property name="dependency.tomcat.zip" value="${maven.dependency.org.apache.tomcat.tomcat.zip.path}" />
								<property name="dependency.juddiv3.war" value="${project.build.directory}/juddiv3-war.war" />
								<property name="dependency.juddiv3replication.war" value="${project.build.directory}/juddiv3-war-repl.war" />
								<property name="dependency.juddi-gui.war" value="${project.build.directory}/juddi-gui-war.war" />
								<property name="dependency.jaxws.jar" value="${maven.dependency.org.apache.geronimo.specs.geronimo-jaxws_2.2_spec.jar.path}" />
								<property name="apache.tomcat.version" value="7.0.64"/>
								<ant antfile="${basedir}/build.xml">
									<property name="dependency.tomcat.zip" value="${dependency.tomcat.zip}" />
									<target name="threenode" />
									
								</ant>
							</tasks>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>2.2-beta-3</version>
				<executions>
					<execution>
						<id>make-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>attached</goal>
						</goals>
						<configuration>
							<descriptors>
								<descriptor>${basedir}/assembly.xml</descriptor>
							</descriptors>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
