<?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.
-->
<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.uima</groupId>
    <artifactId>ruta-parent</artifactId>
    <version>2.9.0-SNAPSHOT</version>
    <relativePath>../ruta-parent/pom.xml</relativePath>
  </parent>

  <artifactId>ruta-ep-parent</artifactId>
  <packaging>pom</packaging>
  <name>Apache UIMA Ruta: ${project.artifactId}</name>
  <url>${uimaWebsiteUrl}</url>
  <inceptionYear>2011</inceptionYear>
  <description>The common parent pom for the UIMA Ruta Eclipse Plugins</description>

  <!-- Special inheritance note
    even though the <scm> element that follows is exactly the
    same as those in super poms, it cannot be inherited because
    there is some special code that computes the connection elements
    from the chain of parent poms, if this is omitted.

    Keeping this a bit factored allows cutting/pasting the <scm>
    element, and just changing the following two properties -->
  <scm>
    <connection>scm:git:git://github.com/apache/uima-ruta</connection>
    <developerConnection>scm:git:git@github.com:apache/uima-ruta.git</developerConnection>
    <url>https://github.com/apache/uima-ruta</url>
    <tag>HEAD</tag>
  </scm>

  <properties>
    <eclipseP2RepoId>org.eclipse.p2.201812</eclipseP2RepoId>
    <eclipseP2RepoUrl>https://download.eclipse.org/releases/2018-12/</eclipseP2RepoUrl>
    <dltk.version>[5.11.0,6.0.0)</dltk.version>
  </properties>

  <repositories>
    <repository>
      <id>${eclipseP2RepoId}</id>
      <url>${eclipseP2RepoUrl}</url>
      <layout>p2</layout>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>artifactory.openntf.org</id>
      <name>artifactory.openntf.org</name>
      <url>https://artifactory.openntf.org/openntf</url>
    </pluginRepository>
  </pluginRepositories>

  <dependencies>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.dltk.core</artifactId>
      <version>${dltk.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.dltk.ui</artifactId>
      <version>${dltk.version}</version>
      <scope>provided</scope>
      <exclusions>
        <exclusion>
          <!-- 
            The p2 resolver appears to have trouble with the "icu-data" classifier
           -->
          <groupId>${eclipseP2RepoId}</groupId>
          <artifactId>com.ibm.icu</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.dltk.debug</artifactId>
      <version>${dltk.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.dltk.annotations</artifactId>
      <version>${dltk.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.dltk.launching</artifactId>
      <version>${dltk.version}</version>
      <scope>provided</scope>
      <exclusions>
        <exclusion>
          <!-- 
            The p2 resolver appears to have trouble with the "icu-data" classifier
           -->
          <groupId>${eclipseP2RepoId}</groupId>
          <artifactId>com.ibm.icu</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.dltk.core.manipulation</artifactId>
      <version>${dltk.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.dltk.validators.core</artifactId>
      <version>${dltk.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.dltk.console</artifactId>
      <version>${dltk.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.dltk.formatter</artifactId>
      <version>${dltk.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.dltk.testing</artifactId>
      <version>${dltk.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
      <version>[3.109.0,4.0.0)</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <dependencyManagement>
    <!-- explicit dependencies for 2018/12 -->
    <dependencies>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.core.contenttype</artifactId>
        <version>[3.7.200,4.0.0)</version>
      </dependency>
      <!--  
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.e4.core.commands</artifactId>
        <version>0.11.0</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.e4.core.di</artifactId>
        <version>[1.5.0,2.0.0)</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.e4.core.services</artifactId>
        <version>[2.0.0,3.0.0)</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.e4.ui.bindings</artifactId>
        <version>0.11.0</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.e4.ui.di</artifactId>
        <version>1.1.0</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.e4.ui.workbench</artifactId>
        <version>1.3.0</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.e4.ui.workbench3</artifactId>
        <version>0.13.0</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.e4.ui.css.core</artifactId>
        <version>0.11.0</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.e4.ui.css.swt</artifactId>
        <version>0.12.0</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.e4.ui.css.swt</groupId>
        <artifactId>theme</artifactId>
        <version>0.10.0</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.e4.ui.model.workbench</artifactId>
        <version>[1.1.100,2.0.0)</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.e4.ui.workbench</groupId>
        <artifactId>swt</artifactId>
        <version>0.13.0</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.e4.ui.workbench.addons.swt</artifactId>
        <version>[1.2.0,2.0.0)</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.e4.ui.workbench.renderers.swt</artifactId>
        <version>0.13.0</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.e4.ui.widgets</artifactId>
        <version>[1.1.0,2.0.0)</version>
      </dependency>
      -->
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.emf.ecore</artifactId>
        <version>[2.16.0,3.0.0)</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.emf.ecore.change</artifactId>
        <version>[2.13.0,3.0.0)</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.emf.ecore.xmi</artifactId>
        <version>[2.15.0,3.0.0)</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.equinox.app</artifactId>
        <version>[1.4.0,2.0.0)</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.equinox.common</artifactId>
        <version>[3.10.200,4.0.0)</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.equinox.preferences</artifactId>
        <version>[3.7.200,4.0.0)</version>
      </dependency>
      <dependency>
        <groupId>${eclipseP2RepoId}</groupId>
        <artifactId>org.eclipse.core.jobs</artifactId>
        <version>[3.10.200,4.0.0)</version>
      </dependency>
      <dependency>
        <groupId>org.w3c.css</groupId>
        <artifactId>sac</artifactId>
        <version>1.3.1</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>jxpath</artifactId>
        <version>1.3.0</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.openntf.maven</groupId>
        <artifactId>p2-layout-resolver</artifactId>
        <version>1.2.0</version>
        <extensions>true</extensions>
      </plugin>
    </plugins>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <version>3.0.1</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

</project>
