<?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</groupId>
		<artifactId>apache</artifactId>
		<version>9</version>
		<relativePath />
	</parent>

	<groupId>org.apache.opennlp</groupId>

	<artifactId>opennlp-caseditor</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>
	<name>OpenNLP CasEditor Plugin</name>
	
	<repositories>
    <repository>
      <id>eclipsePlugins</id>
      <name>Eclipse components</name>
      <layout>default</layout>
      <url>http://repo1.maven.org/eclipse</url>
      
      <releases>
        <updatePolicy>never</updatePolicy>
        <checksumPolicy>fail</checksumPolicy>
      </releases>
      
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    </repositories>
    
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.5</version>
			<scope>test</scope>
		</dependency>

		<dependency>
		  <groupId>org.apache.opennlp</groupId>
		  <artifactId>opennlp-tools</artifactId>
		  <version>1.5.2-incubating</version>
		</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>2.4.0</version>
			<scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uimaj-tools</artifactId>
			<version>2.4.0</version>
			<scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uimaj-ep-cas-editor</artifactId>
			<version>2.4.0</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.opennlp.caseditor_0.0.1</finalName>
		<resources>
			<resource>
				<directory>.</directory>
				<includes>
					<include>plugin.xml</include>
					<include>icons/**/*.*</include>
				</includes>
			</resource>
			<resource>
				<directory>src\main\resources</directory>
			</resource>
		</resources>

		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
				</configuration>
			</plugin>
			<plugin>
			  <artifactId>maven-jar-plugin</artifactId>
			  <configuration>
			    <archive>  
			      <manifestFile>META-INF/MANIFEST.MF</manifestFile>
			    </archive> 
			  </configuration>
			</plugin> 
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<executions>
					<execution>
    	                 <goals><goal>manifest</goal></goals>
		                 <phase>process-classes</phase>
						<configuration>
							<manifestLocation>META-INF/</manifestLocation>
							<instructions>
								<Bundle-SymbolicName>org.apache.opennlp.caseditor;singleton:=true</Bundle-SymbolicName>
								<Bundle-Activator>org.apache.opennlp.caseditor.OpenNLPPlugin</Bundle-Activator>
								<Bundle-RequiredExecutionEnvironment>J2SE-1.5</Bundle-RequiredExecutionEnvironment>
								<Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
								<Export-Package>
								org.apache.opennlp.caseditor.*
								</Export-Package>
								<Require-Bundle>
									org.eclipse.jface.text,
									org.eclipse.text,
									org.eclipse.ui.editors,
									org.eclipse.ui.workbench.texteditor,
									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,
									*
								</Import-Package>
							</instructions>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
