<?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-SNAPSHOT</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-SNAPSHOT</version>
			<scope>compile</scope>
		</dependency>

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

		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uimaj-ep-cas-editor</artifactId>
			<version>2.4.0-SNAPSHOT</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>