<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2012, 2017 Eclipse Foundation and others.
  All rights reserved. This program and the accompanying materials
  are made available under the terms of the Eclipse Distribution License v1.0
  which accompanies this distribution, and is available at
  http://www.eclipse.org/org/documents/edl-v10.php
 
  Contributors:
    Thanh Ha (Eclipse Foundation) - initial implementation
    Nick Boldt (Red Hat Inc.) - support for Tycho 1.0 and upstream component builds
-->

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.eclipse</groupId>
    <artifactId>wtp-parent</artifactId>
    <version>3.10.0-SNAPSHOT</version>
    <relativePath>../wtp-parent</relativePath>
  </parent>

  <groupId>org.eclipse.webtools.servertools</groupId>
  <artifactId>org.eclipse.webtools.servertools</artifactId>
  <version>3.6.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <properties>
    <tycho.scmUrl>scm:git:git://git.eclipse.org/gitroot/servertools/webtools.servertools.git</tycho.scmUrl>
  </properties>

  <repositories>
    <repository>
      <id>webtools-common-site</id>
      <layout>p2</layout>
      <url>${webtools-common-site}</url>
    </repository>

    <!-- To reference parent pom -->
    <repository>
      <id>Webtools Repository - Releases</id>
      <name>Webtools Repository - Releases</name>
      <url>https://repo.eclipse.org/content/repositories/webtools-releases/</url>
    </repository>
    <repository>
      <id>Webtools Repository - Snapshots</id>
      <name>Webtools Repository - Snapshots</name>
      <url>https://repo.eclipse.org/content/repositories/webtools-snapshots/</url>
    </repository>
  </repositories>

  <modules>
    <module>features</module>

    <module>docs/org.eclipse.jst.server.ui.doc.user</module>
    <module>docs/org.eclipse.jst.server.ui.infopop</module>
    <module>docs/org.eclipse.server.doc.isv</module>
    <module>docs/org.eclipse.servertools.doc.isv</module>
    <module>docs/org.eclipse.wst.server.ui.doc.user</module>
    <module>docs/org.eclipse.wst.server.ui.infopop</module>

    <module>plugins/org.eclipse.jst.server.core</module>
    <module>plugins/org.eclipse.jst.server.generic.core</module>
    <module>plugins/org.eclipse.jst.server.generic.jboss</module>
    <module>plugins/org.eclipse.jst.server.generic.jonas</module>
    <module>plugins/org.eclipse.jst.server.generic.oc4j</module>
    <module>plugins/org.eclipse.jst.server.generic.ui</module>
    <module>plugins/org.eclipse.jst.server.websphere.core</module>

    <module>plugins/org.eclipse.jst.server.preview.adapter</module>
    <module>plugins/org.eclipse.jst.server.tomcat.core</module>
    <module>plugins/org.eclipse.jst.server.tomcat.ui</module>
    <module>plugins/org.eclipse.jst.server.ui</module>

    <module>plugins/org.eclipse.wst.internet.monitor.core</module>
    <module>plugins/org.eclipse.wst.internet.monitor.ui</module>
    <module>plugins/org.eclipse.wst.server.core</module>
    <module>plugins/org.eclipse.wst.server.discovery</module>
    <module>plugins/org.eclipse.wst.server.http.core</module>
    <module>plugins/org.eclipse.wst.server.http.ui</module>
    <module>plugins/org.eclipse.wst.server.preview</module>
    <module>plugins/org.eclipse.wst.server.preview.adapter</module>
    <module>plugins/org.eclipse.wst.server.ui</module>

    <module>tests/org.eclipse.wst.internet.monitor.core.tests</module>
    <module>tests/org.eclipse.wst.server.core.tests</module>
    <module>tests/org.eclipse.wst.server.http.core.tests</module>
    <module>tests/org.eclipse.wst.server.util.tests</module>

    <module>tests/org.eclipse.jst.server.tomcat.tests.performance</module>
    <module>tests/org.eclipse.wst.server.tests.performance</module>

    <module>site</module>
  </modules>

  <!-- TODO: move these features/plugins to a downstream repo such as webtools.repositories -->
  <profiles>
    <profile>
      <id>integration</id>
      <properties>
        <skipITests>false</skipITests>
      </properties>
      <modules>
        <!-- need these seven features aggregated in repositoryunittests repo -->
        <module>tests/org.eclipse.jst.server.core.tests</module>
        <module>tests/org.eclipse.jst.server.generic.tests</module>
        <module>tests/org.eclipse.jst.server.tomcat.core.tests</module>
        <module>tests/org.eclipse.jst.server.tomcat.ui.tests</module>
        <module>tests/org.eclipse.jst.server.ui.tests</module>
        <module>tests/org.eclipse.wst.internet.monitor.ui.tests</module>
        <module>tests/org.eclipse.wst.server.ui.tests</module>

        <module>site-integration</module>
      </modules>
    </profile>
  </profiles>

</project>