<?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-wsdl-activity-ui</artifactId>
    <packaging>bundle</packaging>
    <name>Apache Taverna WSDL Activity UI</name>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <instructions>
                        <!-- Use the java version instead of xmlcommons for javax.* packages -->
                        <Import-Package>javax.xml.namespace;version="0.0.0",javax.xml.parsers;version="0.0.0",org.w3c.dom;version="0.0.0",org.xml.sax;version="0.0.0",*</Import-Package>
                    </instructions>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
    <dependencies>
        <dependency>
            <groupId>org.apache.taverna.engine</groupId>
            <artifactId>taverna-credential-manager-api</artifactId>
            <version>${taverna.engine.version}</version>
        </dependency>
<!--
        <dependency>
            <groupId>org.apache.taverna.commonactivities</groupId>
            <artifactId>taverna-wsdl-generic</artifactId>
            <version>${taverna.commonactivities.version}</version>
        </dependency>
-->    
        <dependency>
            <groupId>org.apache.taverna.commonactivities</groupId>
            <artifactId>taverna-wsdl-activity</artifactId>
            <version>${taverna.commonactivities.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-edits-api</artifactId>
            <version>${taverna.workbench.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.taverna.workbench</groupId>
            <artifactId>taverna-selection-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-activity-icons-api</artifactId>
            <version>${taverna.workbench.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.taverna.workbench</groupId>
            <artifactId>taverna-helper-api</artifactId>
            <version>${taverna.workbench.version}</version>
        </dependency>        
        <dependency>
            <groupId>org.apache.taverna.workbench</groupId>
            <artifactId>taverna-ui</artifactId>
            <version>${taverna.workbench.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.taverna.workbench</groupId>
            <artifactId>taverna-credential-manager-ui</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-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>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>

    </dependencies>
</project>

