<?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>caseditor-corpus-server-plugin</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>
	<name>Cas Editor Corpus Server 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>
    
    	<repository>
			<id>maven2-repository.java.net</id>
			<name>Java.net Repository for Maven</name>
			<url>http://download.java.net/maven/2/</url>
			<layout>default</layout>
		</repository>
    </repositories>
    
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.5</version>
			<scope>test</scope>
		</dependency>

		<dependency>
		    <groupId>com.sun.jersey</groupId>
		    <artifactId>jersey-json</artifactId>
		    <version>1.9.1</version>
		</dependency>

		<dependency>
		    <groupId>com.sun.jersey</groupId>
		    <artifactId>jersey-client</artifactId>
		    <version>1.9.1</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.corpus_server.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.corpus_server.caseditor.CorpusServerPlugin;singleton:=true</Bundle-SymbolicName>
								<Bundle-Activator>org.apache.opennlp.corpus_server.caseditor.CorpusServerPlugin</Bundle-Activator>
								<Bundle-RequiredExecutionEnvironment>J2SE-1.5</Bundle-RequiredExecutionEnvironment>
								<Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
								<Export-Package>
								org.apache.opennlp.corpus_server.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,
									com.sun.jersey.api.client.config,
									*
								</Import-Package>
							</instructions>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
