<?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</groupId>
		<artifactId>taverna-parent</artifactId>
		<version>1-incubating-SNAPSHOT</version>
	</parent>

	<groupId>org.apache.taverna.workbench</groupId>
	<artifactId>taverna-workbench</artifactId>
	<version>3.1.0-incubating-SNAPSHOT</version>
	<packaging>pom</packaging>
	<name>Apache Taverna Workbench</name>
        <description>Graphical workbench for editing and running Apache Taverna workflows</description>
        <properties>
            <taverna.language.version>0.15.0-incubating-SNAPSHOT</taverna.language.version>
            <taverna.osgi.version>0.2.0-incubating-SNAPSHOT</taverna.osgi.version>
            <taverna.engine.version>3.1.0-incubating-SNAPSHOT</taverna.engine.version>
            <taverna.commonactivities.version>2.1.0-incubating-SNAPSHOT</taverna.commonactivities.version>
            <org.icepdf.version>4.2.0</org.icepdf.version>
            <batik.version>1.7.0</batik.version>
            <org.fife.ui.hexeditor.version>1.1-SNAPSHOT</org.fife.ui.hexeditor.version>
        </properties>
        
	<modules>
            <module>taverna-dataflow-activity-ui</module>
            <module>taverna-disabled-activity-ui</module>
            <module>taverna-stringconstant-activity-ui</module>
            <module>taverna-unrecognized-activity-ui</module>
            <module>taverna-activity-icons-api</module>
            <module>taverna-activity-palette-api</module>
            <module>taverna-activity-palette-impl</module>
            <module>taverna-activity-palette-ui</module>
            <module>taverna-activity-tools</module>
            <module>taverna-configuration-api</module>
            <module>taverna-configuration-impl</module>
            <module>taverna-contextual-views</module>
            <module>taverna-contextual-views-api</module>
            <module>taverna-contextual-views-impl</module>
            <module>taverna-credential-manager-ui</module>
            <module>taverna-data-management-config-ui</module>
            <module>taverna-design-ui</module>
            <module>taverna-edits-api</module>
            <module>taverna-edits-impl</module>
            <module>taverna-file-api</module>
            <module>taverna-file-impl</module>
            <module>taverna-graph-model</module>
            <module>taverna-graph-view</module>
            <module>taverna-helper-api</module>
            <module>taverna-httpproxy-config</module>
            <module>taverna-iteration-strategy-ui</module>
            <module>taverna-loop-ui</module>
            <module>taverna-menu-api</module>
            <module>taverna-menu-impl</module>
            <module>taverna-menu-items</module>
            <module>taverna-monitor-view</module>
            <module>taverna-parallelize-ui</module>
            <module>taverna-perspective-biocatalogue</module>
            <module>taverna-perspective-design</module>
            <module>taverna-perspective-myexperiment</module>
            <module>taverna-perspective-results</module>
            <module>taverna-plugin-manager</module>
            <module>taverna-plugins-gui</module>
            <module>taverna-reference-ui</module>
            <module>taverna-renderers-api</module>
            <module>taverna-renderers-exts</module>
            <module>taverna-renderers-impl</module>
            <module>taverna-report-api</module>
            <module>taverna-report-explainer</module>
            <module>taverna-report-impl</module>
            <module>taverna-report-view</module>
            <module>taverna-results-view</module>
            <module>taverna-retry-ui</module>
            <module>taverna-run-ui</module>
            <module>taverna-selection-api</module>
            <module>taverna-selection-impl</module>
            <module>taverna-update-manager</module>
            <module>taverna-workbench-api</module>
            <module>taverna-workbench-impl</module>
            <module>taverna-workflow-explorer</module>
            <module>taverna-workflow-view</module>
            <module>taverna-beaninfo</module>
            <module>taverna-io</module>
            <module>taverna-ui</module>
            <module>taverna-uibuilder</module>
        </modules>
  <scm>
    <connection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench.git</connection>
    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench.git</developerConnection>
    <url>https://github.com/apache/incubator-taverna-workbench</url>
    <tag>HEAD</tag>
  </scm>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <repositories>
    <repository>
      <id>apache.snapshots</id>
      <name>Apache Snapshot Repository</name>
      <url>http://repository.apache.org/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
    </repository>
    <repository>
      <id>ice-maven-release</id>
      <name>Ice Maven Release Repository</name>
      <url>http://anonsvn.icesoft.org/repo/maven2/releases/</url>
    </repository>
  </repositories>

</project>
