<?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.taverna.workbench.commonactivities</groupId>
        <artifactId>apache-taverna-workbench-commonactivities</artifactId>
        <version>3.1.0-incubating-SNAPSHOT</version>
    </parent>
    <artifactId>taverna-localworker-activity-ui</artifactId>
    <packaging>bundle</packaging>
    <name>Apache Taverna Local Worker Activity UI</name>
    <dependencies>
        <dependency>
            <groupId>org.apache.taverna.engine</groupId>
            <artifactId>taverna-workflowmodel-api</artifactId>
            <version>${taverna.engine.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.taverna.workbench</groupId>
            <artifactId>taverna-file-api</artifactId>
            <version>${taverna.workbench.version}</version>
            <type>jar</type>
        </dependency>
<!--
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.2.2</version>
		</dependency>
-->
		<!-- category:biojava -->
		<!-- net.sourceforge.taverna.scuflworkers.biojava.GenBankParserWorker -->
		<!-- net.sourceforge.taverna.scuflworkers.biojava.ReverseCompWorker -->
		<!-- net.sourceforge.taverna.scuflworkers.biojava.SwissProtParserWorker -->
		<!-- net.sourceforge.taverna.scuflworkers.biojava.TranscribeWorker -->
		<dependency>
			<groupId>uk.org.mygrid.resources</groupId>
			<artifactId>biojava</artifactId>
			<version>1.4pre1</version>
		</dependency>
		<!-- category:xml -->
		<!-- net.sourceforge.taverna.scuflworkers.xml.XPathTextWorker -->
		<dependency>
			<groupId>org.dom4j</groupId>
			<artifactId>com.springsource.org.dom4j</artifactId>
			<version>${dom4j.version}</version>
		</dependency>
		<!-- <dependency>
			<groupId>dom4j</groupId>
			<artifactId>dom4j</artifactId>
			<version>1.6</version>
		</dependency> -->
		<!-- category:net -->
		<!-- org.embl.ebi.escience.scuflworkers.java.SendEmail -->
		<dependency>
			<groupId>javax.mail</groupId>
			<artifactId>com.springsource.javax.mail</artifactId>
			<version>${mail.version}</version>
		</dependency>
		<!-- <dependency>
			<groupId>javax.mail</groupId>
			<artifactId>mail</artifactId>
			<version>1.4</version>
		</dependency> -->
		<dependency>
			<groupId>javax.activation</groupId>
			<artifactId>com.springsource.javax.activation</artifactId>
			<version>1.1.1</version>
		</dependency>
		<!-- <dependency>
			<groupId>javax.activation</groupId>
			<artifactId>activation</artifactId>
			<version>1.1</version>
		</dependency> -->
		<!-- category:base64 -->
		<!-- org.embl.ebi.escience.scuflworkers.java.EncodeBase64 -->
		<!-- org.embl.ebi.escience.scuflworkers.java.DecodeBase64 -->
		<dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<version>${commons.codec.version}</version>
		</dependency>
		<!-- <dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<version>1.3</version>
		</dependency> -->
        <dependency>
            <groupId>org.apache.taverna.osgi</groupId>
            <artifactId>taverna-app-configuration-api</artifactId>
            <version>${taverna.osgi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.taverna.workbench</groupId>
            <artifactId>taverna-edits-api</artifactId>
            <version>${taverna.workbench.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.taverna.workbench</groupId>
            <artifactId>taverna-configuration-ui-api</artifactId>
            <version>${taverna.workbench.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.taverna.workbench</groupId>
            <artifactId>taverna-activity-icons-api</artifactId>
            <version>${taverna.workbench.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.taverna.workbench</groupId>
            <artifactId>taverna-activity-palette-api</artifactId>
            <version>${taverna.workbench.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.taverna.workbench</groupId>
            <artifactId>taverna-menu-api</artifactId>
            <version>${taverna.workbench.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.taverna.workbench</groupId>
            <artifactId>taverna-contextual-views-api</artifactId>
            <version>${taverna.workbench.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.taverna.workbench</groupId>
            <artifactId>taverna-activity-tools</artifactId>
            <version>${taverna.workbench.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.taverna.ui-activities</groupId>
            <artifactId>taverna-beanshell-activity-ui</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
    </dependencies>
</project>

