<?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-ide-ui</artifactId>
  <parent>
    <groupId>org.apache.uima</groupId>
    <artifactId>ruta-ep-parent</artifactId>
    <version>2.6.1</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 the UIMA Ruta development environment for Eclipse</description>
  <dependencies>
    <dependency>
      <groupId>org.eclipse.dltk</groupId>
      <artifactId>ui</artifactId>
      <version>${dltk.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.dltk.validators</groupId>
      <artifactId>ui</artifactId>
      <version>${dltk.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.dltk.console</groupId>
      <artifactId>ui</artifactId>
      <version>${dltk.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.dltk</groupId>
      <artifactId>debug</artifactId>
      <version>${dltk.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.dltk.debug</groupId>
      <artifactId>ui</artifactId>
      <version>${dltk.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.dltk</groupId>
      <artifactId>formatter</artifactId>
      <version>${dltk.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.dltk</groupId>
      <artifactId>testing</artifactId>
      <version>${dltk.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.core</groupId>
      <artifactId>runtime</artifactId>
      <version>[3.3.0,5.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.core</groupId>
      <artifactId>jobs</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.core</groupId>
      <artifactId>resources</artifactId>
      <version>[3.3.0,5.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse</groupId>
      <artifactId>search</artifactId>
      <version>[3.2.0,5.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse</groupId>
      <artifactId>ui</artifactId>
      <version>[3.3.0,5.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.ui</groupId>
      <artifactId>ide</artifactId>
      <version>[3.3.0,5.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.ui</groupId>
      <artifactId>views</artifactId>
      <version>[3.3.0,5.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.ui</groupId>
      <artifactId>console</artifactId>
      <version>[3.2.0,5.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.ui.workbench</groupId>
      <artifactId>texteditor</artifactId>
      <version>[3.3.0,5.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jface</groupId>
      <artifactId>text</artifactId>
      <version>[3.3.0,5.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.core</groupId>
      <artifactId>variables</artifactId>
      <version>[3.2.0,5.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jdt</groupId>
      <artifactId>launching</artifactId>
      <version>[3.3.0,5.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jdt</groupId>
      <artifactId>core</artifactId>
      <version>[3.3.0,5.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jdt.debug</groupId>
      <artifactId>ui</artifactId>
      <version>[3.2.0,5.0.0)</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.core</groupId>
      <artifactId>contenttype</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.equinox</groupId>
      <artifactId>preferences</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.equinox</groupId>
      <artifactId>app</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.emf.ecore</groupId>
      <artifactId>xmi</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.core</groupId>
      <artifactId>filesystem</artifactId>
      <version>[1.0.0,3.0.0)</version>
      <scope>provided</scope>
    </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>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.1</version>
    </dependency>
  </dependencies>
  <scm>
    <url>http://svn.apache.org/viewvc/uima/ruta/tags/ruta-2.6.1/ruta-ep-ide-ui</url>
    <connection>scm:svn:http://svn.apache.org/repos/asf/uima/ruta/tags/ruta-2.6.1/ruta-ep-ide-ui</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/uima/ruta/tags/ruta-2.6.1/ruta-ep-ide-ui</developerConnection>
  </scm>
  <build>
    <!-- don't use artifactId as first part of finalName, follow instead the eclipse convention -->
    <finalName>org.apache.uima.ruta.ide.ui_${parsedVersion.osgiVersion}</finalName>
    <resources>
      <resource>
        <directory>.</directory>
        <includes>
          <include>plugin.xml</include>
          <include>plugin.properties</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>
                  <exclude>release.properties</exclude> <!-- release generated artifact -->
                  <exclude>marker-file-identifying-*</exclude>
                  <exclude>src/main/resources/org/apache/uima/ruta/ide/formatter/*.ruta</exclude> <!-- preview file -->
                  <exclude>src/main/resources/org/apache/uima/ruta/ide/formatter/preferences/*.ruta</exclude> <!-- preview file -->
                  <exclude>src/main/resources/org/apache/uima/ruta/ide/launching/*.ruta</exclude> <!-- preview file -->
                  <exclude>src/main/resources/org/apache/uima/ruta/ide/ui/documentation/*.html</exclude> <!-- hover documentation -->
                  <exclude>src/main/resources/org/apache/uima/ruta/ide/ui/preferences/*.txt</exclude> <!-- preview file -->
                  <exclude>issuesFixed/**</exclude>
                </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.ide.ui;singleton:=true</Bundle-SymbolicName>
                <Bundle-Activator>org.apache.uima.ruta.ide.RutaIdeUIPlugin</Bundle-Activator>
                <Bundle-RequiredExecutionEnvironment>JavaSE-1.7</Bundle-RequiredExecutionEnvironment>
                <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
                <_nouses>true</_nouses>
                <Export-Package>
                  org.apache.uima.ruta.ide.*
                </Export-Package>
                <Require-Bundle>
                  org.apache.uima.runtime,
                  org.apache.uima.ruta.engine,
                  org.apache.uima.ruta.ide,
                  org.eclipse.core.runtime,
                  org.eclipse.core.resources,
                  org.eclipse.core.filesystem,
                  org.eclipse.ui,
                  org.eclipse.dltk.launching;bundle-version="3.0.0",
                  org.eclipse.dltk.core;bundle-version="3.0.0",
                  org.eclipse.dltk.validators.core;bundle-version="3.0.0",
                  org.eclipse.dltk.console;bundle-version="3.0.0",
                  org.eclipse.dltk.console.ui;bundle-version="3.0.0",
                  org.eclipse.dltk;bundle-version="3.0.0",
                  org.eclipse.dltk.debug;bundle-version="3.0.0",
                  org.eclipse.dltk.debug.ui;bundle-version="3.0.0",
                  org.eclipse.dltk.formatter;bundle-version="3.0.0",
                  org.eclipse.dltk.testing;bundle-version="3.0.0",
                  org.eclipse.dltk.ui;bundle-version="3.0.0",
                  org.eclipse.dltk.validators.ui;bundle-version="3.0.0",
                  org.eclipse.jface.text,
                  org.eclipse.ui.editors,
                  org.eclipse.ui.ide,
                  org.eclipse.search,
                  org.eclipse.debug.ui,
                  org.eclipse.ui.console,
                  org.eclipse.jdt.core,
                  org.eclipse.jdt.debug.ui,
                  org.eclipse.core.variables,
                  org.eclipse.jdt.launching
                </Require-Bundle>
                <Import-Package>
                </Import-Package>
                <Bundle-Localization>plugin</Bundle-Localization>
              </instructions>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

</project>