<?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.
  -->
<!-- $Rev$ $Date$ -->
<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.apache.geronimo.devtools</groupId>
    <artifactId>geronimo-eclipse-plugin</artifactId>
    <packaging>pom</packaging>
    <name>Root POM :: ${artifactId}</name>
    <version>1.1</version>
    <description>Parent POM for Geronimo Eclipse Plugin</description>
    <url>http://geronimo.apache.org/devtools</url>
    <prerequisites>
        <maven>2.0.4</maven>
    </prerequisites>
    <issueManagement>
        <system>jira</system>
        <url>http://issues.apache.org/jira/browse/GERONIMODEVTOOLS</url>
    </issueManagement>
    <mailingLists>
        <mailingList>
            <name>Geronimo User List</name>
            <subscribe>users-subscribe@geronimo.apache.org</subscribe>
            <unsubscribe>users-unsubscribe@geronimo.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/geronimo-user/</archive>
        </mailingList>
        <mailingList>
            <name>Geronimo Developer List</name>
            <subscribe>dev-subscribe@geronimo.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@geronimo.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/geronimo-dev/</archive>
        </mailingList>
        <mailingList>
            <name>Source Control List</name>
            <subscribe>scm-subscribe@geronimo.apache.org</subscribe>
            <unsubscribe>scm-unsubscribe@geronimo.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/geronimo-scm/</archive>
        </mailingList>
    </mailingLists>
    <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:https://svn.apache.org/repos/asf/geronimo/devtools/eclipse-plugin/trunk/</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/geronimo/devtools/eclipse-plugin/trunk/</developerConnection>
        <url>https://svn.apache.org/repos/asf/geronimo/devtools/eclipse-plugin/trunk/</url>
    </scm>
    <organization>
        <name>Geronimo</name>
        <url>http://geronimo.apache.org/</url>
    </organization>
    <properties>
        <common.plugin.version>1.2.1</common.plugin.version>
        <!-- Plugin Versions -->
        <org.apache.geronimo.st.core_version>${common.plugin.version}</org.apache.geronimo.st.core_version>
        <org.apache.geronimo.st.v1.core_version>${common.plugin.version}</org.apache.geronimo.st.v1.core_version>
        <org.apache.geronimo.st.v11.core_version>${common.plugin.version}</org.apache.geronimo.st.v11.core_version>
        <org.apache.geronimo.st.v12.core_version>${common.plugin.version}</org.apache.geronimo.st.v12.core_version>
        <org.apache.geronimo.st.ui_version>${common.plugin.version}</org.apache.geronimo.st.ui_version>
        <org.apache.geronimo.st.v1.ui_version>${common.plugin.version}</org.apache.geronimo.st.v1.ui_version>
        <org.apache.geronimo.st.v11.ui_version>${common.plugin.version}</org.apache.geronimo.st.v11.ui_version>
        <org.apache.geronimo.runtime.common_version>${common.plugin.version}</org.apache.geronimo.runtime.common_version>
        <org.apache.geronimo.runtime.v1_version>${common.plugin.version}</org.apache.geronimo.runtime.v1_version>
        <org.apache.geronimo.runtime.v11_version>${common.plugin.version}</org.apache.geronimo.runtime.v11_version>
        <org.apache.geronimo.runtime.v12_version>${common.plugin.version}</org.apache.geronimo.runtime.v12_version>
        <org.apache.geronimo.common.deployment.model_version>${common.plugin.version}</org.apache.geronimo.common.deployment.model_version>
        <org.apache.geronimo.common.deployment.model.edit_version>${common.plugin.version}</org.apache.geronimo.common.deployment.model.edit_version>
        <org.apache.geronimo.deployment.model_version>${common.plugin.version}</org.apache.geronimo.deployment.model_version>
        <org.apache.geronimo.deployment.model.edit_version>${common.plugin.version}</org.apache.geronimo.deployment.model.edit_version>
        <org.apache.geronimo.v11.deployment.model_version>${common.plugin.version}</org.apache.geronimo.v11.deployment.model_version>
        <org.apache.geronimo.v11.deployment.model.edit_version>${common.plugin.version}</org.apache.geronimo.v11.deployment.model.edit_version>
        <!-- Feature Versions -->
        <org.apache.geronimo.feature_version>${common.plugin.version}</org.apache.geronimo.feature_version>
        <org.apache.geronimo.installableruntime.tomcat.feature_version>1.2.0</org.apache.geronimo.installableruntime.tomcat.feature_version>
        <org.apache.geronimo.installableruntime.jetty.feature_version>1.2.0</org.apache.geronimo.installableruntime.jetty.feature_version>
        <!-- Ext. Jar Dependency Versions -->
        <geronimo_spec_version>1.0</geronimo_spec_version>
        <stax-api_version>1.0</stax-api_version>
        <junitVersion>3.8.1</junitVersion>
        <!-- Eclipse Distribution URLs -->
        <platformDriver>R-3.2.2-200702121330/eclipse-SDK-3.2.2</platformDriver>
        <platformUrl>http://download.eclipse.org/eclipse/downloads/drops/${platformDriver}</platformUrl>
        <emfUrl>http://download.eclipse.org/modeling/emf/emf/downloads/drops/2.2.2/R200702131851/emf-sdo-xsd-SDK-2.2.2.zip</emfUrl>
        <jemUrl>http://download.eclipse.org/tools/ve/downloads/drops/R-1.2.3_jem-200701301117/JEM-SDK-1.2.3_jem.zip</jemUrl>
        <gefUrl>http://download.eclipse.org/tools/gef/downloads/drops/R-3.2.2-200702081315/GEF-SDK-3.2.2.zip</gefUrl>
        <wtpUrl>http://download.eclipse.org/webtools/downloads/drops/R1.5/R-1.5.3-200702082048/wtp-sdk-R-1.5.3.zip</wtpUrl>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-plugin-api</artifactId>
                <version>2.0.4</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven</groupId>
                <artifactId>maven-project</artifactId>
                <version>2.0.4</version>
            </dependency>
            <dependency>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <version>2.1</version>
            </dependency>
            <dependency>
                <groupId>ant</groupId>
                <artifactId>ant</artifactId>
                <version>1.6.5</version>
            </dependency>
            <dependency>
                <groupId>velocity</groupId>
                <artifactId>velocity</artifactId>
                <version>1.4</version>
            </dependency>
            <dependency>
                <groupId>velocity</groupId>
                <artifactId>velocity-dep</artifactId>
                <version>1.4</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-archiver</artifactId>
                <version>1.0-alpha-3</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse</groupId>
                <artifactId>osgi</artifactId>
                <version>3.2.1.R32x_v20060919</version>
            </dependency>
            <dependency>
                <groupId>xstream</groupId>
                <artifactId>xstream</artifactId>
                <version>1.1.3</version>     
            </dependency>
            <dependency>
                <groupId>xmlbeans</groupId>
                <artifactId>xbean</artifactId>
                <version>2.0.0</version>     
            </dependency>
            <!-- Dependencies for Crimson DOM Bug Workaround -->
            <dependency>
                <groupId>xerces</groupId>
                <artifactId>xercesImpl</artifactId>
                <version>2.5.0</version>
            </dependency>
            <dependency>
                <groupId>xerces</groupId>
                <artifactId>xmlParserAPIs</artifactId>
                <version>2.6.2</version>
            </dependency>
            <dependency>
                <groupId>xerces</groupId>
                <artifactId>xerces</artifactId>
                <version>2.4.0</version>
            </dependency>
            <dependency>
                <groupId>xml-resolver</groupId>
                <artifactId>xml-resolver</artifactId>
                <version>1.1</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <distributionManagement>
        <repository>
            <id>apache-repo</id>
            <name>Apache CVS Repository</name>
            <url>scpexe://cvs.apache.org/www/cvs.apache.org/maven-snapshot-repository</url>
        </repository>
        <snapshotRepository>
            <id>apache-snapshots</id>
            <name>Apache CVS Development Repository</name>
            <url>scpexe://cvs.apache.org/www/cvs.apache.org/maven-snapshot-repository</url>
        </snapshotRepository>
        <site>
            <id>geronimo-website</id>
            <url>scpexe://minotaur.apache.org/www/geronimo.apache.org/maven/</url>
        </site>
    </distributionManagement>
    <build>
        <defaultGoal>install</defaultGoal>
        <sourceDirectory>src/</sourceDirectory>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.geronimo.devtools</groupId>
                    <artifactId>maven-geronimodevtools-plugin</artifactId>
                    <configuration>
                        <platformUrl>${platformUrl}</platformUrl>
                        <urls>
                            <url>${emfUrl}</url>
                            <url>${jemUrl}</url>
                            <url>${gefUrl}</url>
                            <url>${wtpUrl}</url>
                        </urls>
                        <eclipseHome>${settings.localRepository}/eclipse/eclipse/</eclipseHome>
                    </configuration>
                    <executions>
                        <execution>
                            <id>create-eclipse-image</id>
                            <phase>validate</phase>
                            <goals>
                                <goal>download</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>dependency-maven-plugin</artifactId>
                    <version>1.0</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    <repositories>
        <repository>
            <id>apache-snapshots</id>
            <name>Apache Snapshots Repository</name>
            <url>http://people.apache.org/repo/m2-snapshot-repository</url>
            <layout>default</layout>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>daily</updatePolicy>
                <checksumPolicy>ignore</checksumPolicy>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
        <repository>
            <id>apache.incubator</id>
            <name>Apache Incubator Repository</name>
            <url>http://people.apache.org/repo/m2-incubating-repository/</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
                <updatePolicy>daily</updatePolicy>
                <checksumPolicy>ignore</checksumPolicy>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
        <repository>
            <id>codehaus-snapshots</id>
            <name>Codehaus Snapshots Repository</name>
            <url>http://snapshots.repository.codehaus.org</url>
            <layout>default</layout>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>daily</updatePolicy>
            <checksumPolicy>ignore</checksumPolicy>
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
        <repository>
            <id>sppatel</id>
            <name>sppatel Repository on Apache</name>
            <url>http://people.apache.org/~sppatel/maven/repository/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>
    <modules>
        <module>maven-plugins</module>
        <module>emf</module>
        <module>plugins</module>
        <module>features</module>
        <module>assembly</module>
    </modules>
</project>
