<?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/xsd/maven-4.0.0.xsd">

	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.apache.taverna</groupId>
		<artifactId>apache-taverna-parent</artifactId>
		<version>2-incubating</version>
	</parent>

	<groupId>org.apache.taverna.engine</groupId>
	<artifactId>apache-taverna-engine</artifactId>
	<version>3.1.0-incubating-SNAPSHOT</version>
	<packaging>pom</packaging>
	<name>Apache Taverna Engine and Platform</name>

	<properties>
		<taverna.language.version>0.15.1-incubating</taverna.language.version>
		<taverna.osgi.version>0.2.1-incubating</taverna.osgi.version>
                <servicemix.derby.version>10.12.1.1_1</servicemix.derby.version> 
	</properties>

	<modules>
		<!-- Avoid spaghetti dependencies -->
		<!-- <module>taverna-platform-integration-tests</module> --> 
		<!-- <module>taverna-integration-tests</module> --> 
		<module>taverna-activity-archetype</module>
		<module>taverna-activity-test-utils</module>
		<module>taverna-capability-api</module>
		<module>taverna-capability-impl</module>
		<module>taverna-credential-manager</module>
		<module>taverna-credential-manager-impl</module>
		<module>taverna-database-configuration-api</module>
		<module>taverna-database-configuration-impl</module>

		<module>taverna-dataflow-activity</module>
		<module>taverna-execution-api</module>
		<module>taverna-execution-hadoop</module>
		<module>taverna-execution-impl</module>
		<module>taverna-execution-local</module>
		<module>taverna-execution-remote</module>
		<module>taverna-observer</module>

		<!-- FIXME: Upgrade to T3 <module>taverna-prov</module> -->
		<module>taverna-prov-owl-bindings</module>
		<!-- <module>taverna-provenanceconnector</module> -->
		<module>taverna-reference-api</module>
		<module>taverna-reference-impl</module>
		<module>taverna-reference-testhelpers</module>
		<module>taverna-reference-types</module>
		<module>taverna-report-api</module>
		<module>taverna-run-api</module>
		<module>taverna-run-impl</module>
		<module>taverna-services-api</module>
		<module>taverna-services-impl</module>
		<module>taverna-stringconstant-activity</module>
		<module>taverna-workflowmodel-api</module>
		<module>taverna-workflowmodel-extensions</module>
		<module>taverna-workflowmodel-impl</module>
	</modules>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>log4j</groupId>
				<artifactId>log4j</artifactId>
				<version>${log4j.version}</version>
			</dependency>
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>${junit.version}</version>
				<scope>test</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<scm>
		<connection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-taverna-engine.git</connection>
		<developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-taverna-engine.git</developerConnection>
		<url>https://github.com/apache/incubator-taverna-engine</url>
		<tag>HEAD</tag>
	</scm>

	<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>
