<?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.language</groupId>
		<artifactId>apache-taverna-language</artifactId>
		<version>0.15.1-incubating</version>
	</parent>
	<artifactId>taverna-scufl2-examples</artifactId>
	<packaging>bundle</packaging>
	<name>Apache Taverna Scufl 2 examples</name>
	<dependencies>
		<dependency>
			<groupId>${project.parent.groupId}</groupId>
			<artifactId>taverna-scufl2-api</artifactId>
			<version>${project.parent.version}</version>
		</dependency>
		<dependency>
			<groupId>${project.parent.groupId}</groupId>
			<artifactId>taverna-scufl2-t2flow</artifactId>
			<version>${project.parent.version}</version>
		</dependency>
		<dependency>
			<groupId>${project.parent.groupId}</groupId>
			<artifactId>taverna-scufl2-wfbundle</artifactId>
			<version>${project.parent.version}</version>
		</dependency>

		<!-- For writing out JSON-LD annotations -->

		<dependency>
			<groupId>org.apache.jena</groupId>
			<artifactId>jena-arq</artifactId>
			<version>${jena.version}</version>
		</dependency>

		<!-- Following only needed by src/test/java -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>appassembler-maven-plugin</artifactId>
				<version>1.10</version>
				<executions>
					<execution>
						<id>assemble</id>
						<phase>package</phase>
						<goals>
							<goal>assemble</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<repositoryLayout>flat</repositoryLayout>
					<repositoryName>lib</repositoryName>
					<assembleDirectory>${project.build.directory}/${project.artifactId}</assembleDirectory>
					<programs>
						<program>
							<mainClass>org.apache.taverna.examples.ConvertT2flowToWorkflowBundle</mainClass>
							<name>t2flowtowfbundle</name>
						</program>
						<program>
							<mainClass>org.apache.taverna.examples.ProcessorNames</mainClass>
							<name>processornames</name>
						</program>
						<program>
							<mainClass>org.apache.taverna.examples.ServiceTypes</mainClass>
							<name>servicetypes</name>
						</program>
						<program>
							<mainClass>org.apache.taverna.examples.WorkflowMaker</mainClass>
							<name>workflowmaker</name>
						</program>
						<program>
							<mainClass>org.apache.taverna.examples.JsonExport</mainClass>
							<name>jsonexport</name>
						</program>
					</programs>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>
