<?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>4-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.16.0-incubating-SNAPSHOT</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-monitor-view</module>
            <module>taverna-parallelize-ui</module>
            <module>taverna-perspective-design</module>
            <module>taverna-perspective-myexperiment</module>
            <module>taverna-perspective-results</module>
            <module>taverna-plugin-manager</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-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>
            <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-report-impl</module>
            <module>taverna-report-view</module>
            <module>taverna-report-explainer</module>
	    -->

<!--
     The below contains Taverna 2-ish code which should be updated
to use Taverna OSGi Plugin Manager - it is kept for reference as some
of the functionality (e.g. update on startup check) should be moved to its
replacement, taverna-plugin-manager
            <module>taverna-plugins-gui</module>
-->

        </modules>
  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/incubator-taverna-workbench.git</connection>
    <developerConnection>scm:git:git@github.com:apache/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>
						<!-- taverna-renderers-impl ASF-created test-files for media-file detection -->
						<exclude>**/src/test/resources/test.*</exclude>
					</excludes>
				</configuration>
			</plugin>

        </plugins>
    </build>
    <repositories>
        <repository>
            <id>apache.snapshots</id>
            <name>Apache Snapshot Repository</name>
            <url>https://repository.apache.org/snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>

</project>
