<?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>2.4.1-SNAPSHOT</version>
    <relativePath>../uimaj-parent/pom.xml</relativePath>
  </parent>
  
	<artifactId>uimaj-ep-cas-editor-ide</artifactId>
  <version>2.4.1-SNAPSHOT</version>
	<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:http://svn.apache.org/repos/asf/uima/uimaj/trunk/uimaj-ep-cas-editor-ide
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/uima/uimaj/trunk/uimaj-ep-cas-editor-ide
    </developerConnection>
    <url>
      http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-ep-cas-editor-ide
    </url>
  </scm>
  
  <properties>
    <uimaScmProject>${project.artifactId}</uimaScmProject>
  </properties>
  		
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.5</version>
      <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>
	</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>
                  <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>J2SE-1.5</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;bundle-version="4.5.0";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.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>