<?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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <artifactId>ruta-ep-addons</artifactId>
  <parent>
    <groupId>org.apache.uima</groupId>
    <artifactId>ruta-ep-parent</artifactId>
    <version>3.3.0</version>
    <relativePath>../ruta-ep-parent/pom.xml</relativePath>
  </parent>
  <properties>
    <uimaScmProject>${project.artifactId}</uimaScmProject>
  </properties>
  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
  <url>${uimaWebsiteUrl}</url>
  <description>Provides addons for the UIMA Ruta Workbench in Eclipse</description>

  <scm>
    <connection>scm:git:https://github.com/apache/uima-ruta/</connection>
    <developerConnection>scm:git:https://github.com/apache/uima-ruta/</developerConnection>
    <url>https://github.com/apache/uima-ruta/</url>
    <tag>ruta-3.3.0</tag>
  </scm>

  <dependencies>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-core</artifactId>
      <version>${uimaVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>ruta-ep-caseditor</artifactId>
      <version>${project.parent.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-ep-cas-editor-ide</artifactId>
      <version>${uimaVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-ep-cas-editor</artifactId>
      <version>${uimaVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>ruta-core</artifactId>
      <version>${project.parent.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>ruta-ep-ide</artifactId>
      <version>${project.parent.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>ruta-ep-ide-ui</artifactId>
      <version>${project.parent.version}</version>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.equinox.app</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.ui</artifactId>
      <version>[3.111.0,4.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.ui.ide</artifactId>
      <version>[3.14.200,4.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.core.resources</artifactId>
      <version>[3.13.200,4.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.ui.workbench.texteditor</artifactId>
      <version>[3.11.200,4.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.core.jobs</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.emf.ecore</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.emf.ecore.xmi</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.jface.text</artifactId>
      <version>[3.15.0,4.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.equinox.preferences</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${eclipseP2RepoId}</groupId>
      <artifactId>org.eclipse.debug.ui</artifactId>
      <version>[3.1.200,4.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
    </dependency>
  </dependencies>

  <build>
    <resources>
      <resource>
        <directory>.</directory>
        <includes>
          <include>plugin.xml</include>
          <include>icons/**/*.*</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
      <resource>
        <directory>src/main/readme_src</directory>
      </resource>
    </resources>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <executions>
            <execution>
              <id>default-cli</id>
              <configuration>
                <excludes combine.children="append">
                  <exclude>src/test/resources/ManualTests/*</exclude> <!-- test data -->
                </excludes>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <executions>
          <execution>
            <id>uima-bundle</id>
            <configuration>
              <instructions>
                <Bundle-SymbolicName>org.apache.uima.ruta.addons;singleton:=true</Bundle-SymbolicName>
                <Bundle-Activator>org.apache.uima.ruta.addons.RutaAddonsPlugin</Bundle-Activator>
                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
                <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
                <_nouses>true</_nouses>
                <Export-Package>
                  org.apache.uima.ruta.*
                </Export-Package>
                <Require-Bundle>
                  org.eclipse.ui,
                  org.eclipse.core.runtime,
                  org.apache.uima.runtime,
                  org.apache.uima.ruta.engine,
                  org.eclipse.core.resources,
                  org.apache.uima.ruta.ide,
                  org.apache.uima.ruta.ide.ui,
                  org.eclipse.ui.ide,
                  org.eclipse.dltk.core,
                  org.eclipse.jface.text,
                  org.eclipse.dltk.ui,
                  org.eclipse.ui.editors,
                  org.eclipse.dltk.launching,
                  org.eclipse.debug.ui,
                  org.apache.uima.caseditor,
                  org.apache.uima.ruta.caseditor,
                  org.apache.uima.caseditor.ide
                </Require-Bundle>
                <Import-Package>
                </Import-Package>
              </instructions>
            </configuration>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>
</project>