<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one or more
  ~ contributor license agreements.  See the NOTICE file distributed with
  ~ this work for additional information regarding copyright ownership.
  ~ The ASF licenses this file to You 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.
  -->

<!-- @version $Rev$ $Date$ -->

<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>

    <groupId>org.apache.geronimo.devtools</groupId>
    <artifactId>testsuite</artifactId>
    <packaging>pom</packaging>
    <version>2.2.1</version>
    <name>Geronimo Eclipse Plugin :: Testsuite</name>

    <parent>
        <groupId>org.apache.geronimo.devtools</groupId>
        <artifactId>geronimo-eclipse-plugin</artifactId>
        <version>2.2.1</version>
    </parent>

    <description>
        Geronimo Eclipse Plugin Integration Testsuite
    </description>

    <properties>
        <geronimoVersion_1>2.2.1</geronimoVersion_1>
        <geronimoVersion_2>2.1.7</geronimoVersion_2>
        <geronimoVersion_3>2.0.2</geronimoVersion_3>
    </properties>

    <dependencies>
        <!--
         |
         | Geronimo server v2.2
         |
         -->
        <dependency>
            <groupId>org.apache.geronimo.assemblies</groupId>
            <artifactId>geronimo-tomcat6-javaee5</artifactId>
            <version>${geronimoVersion_1}</version>
            <type>zip</type>
            <classifier>bin</classifier>
            <scope>test</scope>
            <!--
             |
             | Exclude server dependencies not used by the GEP
             |
             -->
            <exclusions>
                <exclusion>
                    <groupId>com.sun.xml.ws</groupId>
                    <artifactId>jaxws-tools</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.xml.ws</groupId>
                    <artifactId>jaxws-rt</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.tomcat</groupId>
                    <artifactId>catalina</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.tomcat</groupId>
                    <artifactId>jasper</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.pluto</groupId>
                    <artifactId>pluto-portal-driver</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.pluto</groupId>
                    <artifactId>pluto-portal-driver-impl</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.pluto</groupId>
                    <artifactId>pluto-container</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.pluto</groupId>
                    <artifactId>pluto-taglib</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.pluto</groupId>
                    <artifactId>pluto-descriptor-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.pluto</groupId>
                    <artifactId>pluto-descriptor-impl</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>juddi</groupId>
                    <artifactId>juddi</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!--
         |
         | Geronimo server v2.1
         |
         -->
        <dependency>
            <groupId>org.apache.geronimo.assemblies</groupId>
            <artifactId>geronimo-tomcat6-javaee5</artifactId>
            <version>${geronimoVersion_2}</version>
            <type>zip</type>
            <classifier>bin</classifier>
            <scope>test</scope>
            <!--
             |
             | Exclude server dependencies not used by the GEP
             |
             -->
            <exclusions>
                <exclusion>
                    <groupId>com.sun.xml.ws</groupId>
                    <artifactId>jaxws-tools</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.xml.ws</groupId>
                    <artifactId>jaxws-rt</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.tomcat</groupId>
                    <artifactId>catalina</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.tomcat</groupId>
                    <artifactId>jasper</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.pluto</groupId>
                    <artifactId>pluto-portal-driver</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.pluto</groupId>
                    <artifactId>pluto-portal-driver-impl</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.pluto</groupId>
                    <artifactId>pluto-container</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.pluto</groupId>
                    <artifactId>pluto-taglib</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.pluto</groupId>
                    <artifactId>pluto-descriptor-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.pluto</groupId>
                    <artifactId>pluto-descriptor-impl</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>juddi</groupId>
                    <artifactId>juddi</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.axis2</groupId>
                    <artifactId>axis2-jaxws</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.axis2</groupId>
                    <artifactId>axis2-kernel</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.axis2</groupId>
                    <artifactId>axis2-metadata</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.axis2</groupId>
                    <artifactId>axis2-saaj</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.tomcat</groupId>
                    <artifactId>jasper-el</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!--
         |
         | Geronimo server v2.0
         |
         -->
        <dependency>
            <groupId>org.apache.geronimo.assemblies</groupId>
            <artifactId>geronimo-tomcat6-jee5</artifactId>
            <version>${geronimoVersion_3}</version>
            <type>zip</type>
            <classifier>bin</classifier>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <repositories>
        <!-- Following is needed for dwr-2.0.5.jar -->
        <repository>
            <id>geronimo-server-trunk</id>
            <name>Private Geronimo 2.2 Repo</name>
            <url>https://svn.apache.org/repos/asf/geronimo/server/trunk/repository/</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
        <!-- Following is needed for pinned Tomcat and Scout depends -->
        <repository>
            <id>geronimo-server-2.0.2</id>
            <name>Private Geronimo 2.0.2 Repo</name>
            <url>https://svn.apache.org/repos/asf/geronimo/server/tags/2.0.2/repository/</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>

    <build>
        <plugins>
            <!--
             |
             | Clean up the eclipse artifacts from previous launches
             |
             -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
                <configuration>
                    <failOnError>false</failOnError>
                    <filesets>
                        <fileset>
                            <directory>${pom.basedir}</directory>
                            <includes>
                                <include>launcher/.metadata</include>
                                <include>launcher/eclipse</include>
                                <include>launcher/results</include>
                                <include>launcher/server_v2.2</include>
                                <include>launcher/server_v2.1</include>
                                <include>launcher/server_v2.0</include>
                                <include>launcher/workspace</include>
                            </includes>
                        </fileset>
                    </filesets>
                </configuration>
            </plugin>
        </plugins>
        <pluginManagement>
             <plugins>
                <!-- skip deploy child artifacts in release process-->
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>             
                    <configuration>
                      <skip>true</skip>
                   </configuration>
                </plugin>
             </plugins>
         </pluginManagement>        
    </build>

    <modules>
        <module>eclipse</module>
        <module>server</module>
        <module>plugins</module>
        <module>launcher</module>
    </modules>

</project>
