<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2012, 2013 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
-->

<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.webservices</groupId>
  <artifactId>org.eclipse.webtools.webservices.parent</artifactId>
  <version>3.6.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <properties>
    <tycho.scmUrl>scm:git:git://git.eclipse.org/gitroot/webservices/webtools.webservices.git</tycho.scmUrl>
  </properties>

  <repositories>
    <repository>
      <id>webtools-common-site</id>
      <layout>p2</layout>
      <url>${webtools-common-site}</url>
    </repository>
    <repository>
      <id>webtools-servertools-site</id>
      <layout>p2</layout>
      <url>${webtools-servertools-site}</url>
    </repository>
    <repository>
      <id>webtools-sourceediting-site</id>
      <layout>p2</layout>
      <url>${webtools-sourceediting-site}</url>
    </repository>
    <repository>
      <id>webtools-jsdt-site</id>
      <layout>p2</layout>
      <url>${webtools-jsdt-site}</url>
    </repository>
    <repository>
      <id>webtools-jsf-site</id>
      <layout>p2</layout>
      <url>${webtools-jsf-site}</url>
    </repository>
    <repository>
      <id>webtools-jeetools-site</id>
      <layout>p2</layout>
      <url>${webtools-jeetools-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>

  <!-- Bug 526333 - ignore vestigial project settings which appear in Eclipse but are ignored by Tycho, like API access restrictions -->
  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-compiler-plugin</artifactId>
        <version>${tycho.version}</version>
        <configuration>
          <useProjectSettings>false</useProjectSettings>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <modules>
    <module>core</module>
    <module>jaxws</module>
    <module>axis2</module>

    <module>core/features/javaee-web</module>

    <module>site</module>    
  </modules>
</project>
