<?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.1.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.1.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>
    <!-- don't use artifactId as first part of finalName, follow instead the eclipse convention -->
    <finalName>org.apache.uima.ruta.addons_${parsedVersion.osgiVersion}</finalName>
    <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>