<?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>uimaj-parent</artifactId>
    <version>3.1.0</version>
    <relativePath>../uimaj-parent/pom.xml</relativePath>
  </parent>
  
	<artifactId>uimaj-ep-cas-editor-ide</artifactId>
	<packaging>jar</packaging>
	<name>Apache UIMA Eclipse: ${project.artifactId}</name>
  <description>Allows editing the contents of a saved CAS</description>
  <url>${uimaWebsiteUrl}</url>
  
  <!-- 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:svn:https://svn.apache.org/repos/asf/uima/uv3/uimaj-v3/tags/uimaj-3.1.0/uimaj-ep-cas-editor-ide
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/uima/uv3/uimaj-v3/tags/uimaj-3.1.0/uimaj-ep-cas-editor-ide
    </developerConnection>
    <url>
      https://svn.apache.org/viewvc/uima/uv3/uimaj-v3/tags/uimaj-3.1.0/uimaj-ep-cas-editor-ide
    </url>
  </scm>
  
  <properties>
    <uimaScmProject>${project.artifactId}</uimaScmProject>
  </properties>
  		
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
      <scope>test</scope>
		</dependency>

		<!-- UIMA dependencies -->
		<!--
			don't depend on the runtime plugin, instead, depend on the parts
			needed
		-->
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uimaj-core</artifactId>
			<version>${project.parent.version}</version>
			<scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uimaj-tools</artifactId>
			<version>${project.parent.version}</version>
			<scope>compile</scope>
		</dependency>
		
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uimaj-ep-cas-editor</artifactId>
			<version>${project.parent.version}</version>
			<scope>compile</scope>
		</dependency>

		<!-- Eclipse dependencies -->
		<dependency>
			<groupId>org.eclipse.core</groupId>
			<artifactId>runtime</artifactId>
			<version>[3.3.0.0,4.0.0)</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.eclipse.core</groupId>
			<artifactId>resources</artifactId>
			<version>[3.3.0.0,4.0.0)</version>
			<scope>provided</scope>
		</dependency>

		<!-- Depending on org.eclipse.ui does not include the SWT dependency -->
		<dependency>
			<groupId>org.eclipse</groupId>
			<artifactId>ui</artifactId>
			<version>[3.3.0.0,4.0.0)</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.eclipse.swt</groupId>
			<artifactId>org.eclipse.swt.win32.win32.x86</artifactId>
      <!-- changing the lower version number to 3.2.0, 
           was 3.3.0 
           because only 3.2.0 and 3.2.1 are in 
           repo -->
			<version>[3.2.0.0,4.0.0)</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.eclipse.ui</groupId>
			<artifactId>ide</artifactId>
			<version>[3.3.0.0,4.0.0)</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.eclipse.ui</groupId>
			<artifactId>views</artifactId>
      <!-- changing the lower version number to 3.2.0, 
        was 3.3.0 
        because only 3.2.0 and 3.2.1 are in 
        repo -->
			<version>[3.2.0.0,4.0.0)</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.eclipse.ui.workbench</groupId>
			<artifactId>texteditor</artifactId>
			<version>[3.3.0.0,4.0.0)</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.eclipse.jface</groupId>
			<artifactId>text</artifactId>
			<version>[3.3.0.0,4.0.0)</version>
			<scope>provided</scope>
		</dependency>
		
    <!-- https://issues.apache.org/jira/browse/UIMA-3510 -->
    <dependency>
      <groupId>org.eclipse.equinox</groupId>
      <artifactId>app</artifactId>
      <!-- https://issues.apache.org/jira/browse/UIMA-3695
          <version>[1.0.0,1.0.1)</version>
       -->
       <version>[1.2.0,2.0.0)</version>
    </dependency>		
	</dependencies>

	<build>
    <!-- don't use artifactId as first part of finalName, follow instead the eclipse convention -->  
    <finalName>org.apache.uima.caseditor.ide_${parsedVersion.osgiVersion}</finalName>  
    <resources>
      <resource>
        <directory>.</directory>
        <includes>
          <include>plugin.xml</include>
          <include>icons/**/*.*</include>
        </includes>
      </resource>
      <resource>
        <directory>src\main\resources</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>release.properties</exclude> <!-- release generated artifact -->
                  <exclude>src/test/resources/ManualTests/*</exclude> <!-- test data -->
                  <exclude>marker-file-identifying-*</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.caseditor.ide;singleton:=true</Bundle-SymbolicName>
                <Bundle-Activator>org.apache.uima.caseditor.ide.CasEditorIdePlugin</Bundle-Activator>
                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
                <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
                <Export-Package>
                  org.apache.uima.caseditor.ide.*
                </Export-Package>
                <Require-Bundle>
                  org.eclipse.jface.text,
                  org.eclipse.text,
                  org.eclipse.ui.editors,
                  org.eclipse.ui.workbench.texteditor,
                  org.eclipse.ui.ide,
                  org.eclipse.ui,
                  org.eclipse.ui.workbench,
                  org.eclipse.core.runtime,
                  org.eclipse.core.resources,
                  org.junit4;resolution:=optional
                </Require-Bundle>
                <Import-Package>
                  !org.eclipse.jface.text,
                  !org.eclipse.jface.text.link,
                  !org.eclipse.jface.text.source,
                  !org.eclipse.jface.text.templates,
                  !org.eclipse.ui.texteditor,
                  !org.eclipse.ui,
                  !org.eclipse.ui.actions,
                  !org.eclipse.ui.dialogs,
                  !org.eclipse.ui.model,
                  !org.eclipse.ui.part, 
                  !org.eclipse.core.runtime,
                  !org.osgi.framework,
                  org.apache.uima.caseditor.editor.editview,
                  org.apache.uima.caseditor.editor.fsview,
                  org.apache.uima.caseditor.editor.styleview,
                  *
                </Import-Package>
              </instructions>
            </configuration>
          </execution>
        </executions>
			</plugin>
            
		</plugins>
	</build>
</project>