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

	<groupId>org.apache.taverna.workbench</groupId>
	<artifactId>apache-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.1-incubating</taverna.language.version>
            <taverna.osgi.version>0.2.1-incubating</taverna.osgi.version>
            <taverna.engine.version>3.1.0-incubating</taverna.engine.version>
            <taverna.commonactivities.version>2.1.0-incubating</taverna.commonactivities.version>
            <batik.version>1.7.0-SNAPSHOT</batik.version>
        </properties>
        
	<modules>
            <module>taverna-dataflow-activity-ui</module>
            <!-- Not yet updated to scufl2 configs:
            <module>taverna-disabled-activity-ui</module>
	    <module>taverna-iteration-strategy-ui</module>
            <module>taverna-loop-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-menu-api</module>
            <module>taverna-menu-impl</module>
            <module>taverna-menu-items</module>
            <module>taverna-parallelize-ui</module>
            <module>taverna-perspective-design</module>
            <module>taverna-perspective-myexperiment</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-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>
            <module>batik-osgi</module>

	    <!-- TAVERNA-992 The below needs updating to Taverna 3 workbench

	    e.g. using SCUFL2 Workflow instead of Dataflow, or using the
            taverna-engine Report instead of WorkflowInstanceFacade

            <module>taverna-results-view</module>
            <module>taverna-perspective-results</module>
            <module>taverna-monitor-view</module>
            <module>taverna-report-impl</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.rat</groupId>
				<artifactId>apache-rat-plugin</artifactId>
				<configuration combine.children="append" >
					<useDefaultExcludes>true</useDefaultExcludes>
					<excludes>
						<!-- Following excludes needed for 
						disabled subfolders that should be modules, but are commented out -->
						<exclude>**/.classpath</exclude>
						<exclude>**/.project</exclude>
						<exclude>**/.settings/</exclude>
						<exclude>**/target/</exclude>
						<exclude>**/META-INF/services/</exclude>
						<!-- No headers in JSON which haven't got comments ... -->
						<exclude>**/*.json</exclude>
						<!-- License details are mentioned in NOTICE ... -->
						<exclude>**/src/main/jjtree/dotparser.jjt</exclude>
					</excludes>
				</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>
    </repositories>

</project>
