<?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.2-incubating-SNAPSHOT</version>
	</parent>
	<artifactId>taverna-scufl2-wfdesc</artifactId>
	<packaging>bundle</packaging>
	<name>Apache Taverna Scufl 2 wfdesc export</name>
	<description>Convert Scufl2 workflow to wfdesc structure (from Wf4Ever RO ontology)</description>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.jena</groupId>
				<artifactId>jena-maven-tools</artifactId>
				<version>${jena.version}</version>
				<configuration>
					<includes>
						<include>src/main/resources/org/purl/wf4ever/wfdesc/*.ttl</include>
						<include>src/main/resources/org/purl/wf4ever/wfdesc/*.ttl</include>
						<include>src/main/resources/com/xmlns/foaf/foaf.rdf</include>
						<include>src/main/resources/org/w3/prov-o.ttl</include>
					</includes>
					<fileOptions>
						<source>
							<input>default</input>
							<package-name>org.apache.taverna.scufl2.wfdesc.ontologies</package-name>
							<ontology>true</ontology>
							<output>${project.build.directory}/generated-sources/jena</output>
						</source>
					</fileOptions>
				</configuration>
				<executions>
					<execution>
						<id>schemagen</id>
						<goals>
							<goal>translate</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>build-helper-maven-plugin</artifactId>
				<version>1.10</version>
				<executions>
					<execution>
						<id>add-source</id>
						<phase>generate-sources</phase>
						<goals>
							<goal>add-source</goal>
						</goals>
						<configuration>
							<sources>
								<source>${project.build.directory}/generated-sources/jena</source>
							</sources>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
		<pluginManagement>
			<plugins>
				<!--This plugin's configuration is used to store Eclipse m2e settings 
					only. It has no influence on the Maven build itself. -->
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>
											org.apache.jena
										</groupId>
										<artifactId>
											jena-maven-tools
										</artifactId>
										<versionRange>
											[3.0.1,)
										</versionRange>
										<goals>
											<goal>translate</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<execute />
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
	<dependencies>

		<dependency>
			<groupId>${project.groupId}</groupId>
			<artifactId>taverna-scufl2-api</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>${project.groupId}</groupId>
			<artifactId>taverna-scufl2-t2flow</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>${project.groupId}</groupId>
			<artifactId>taverna-scufl2-scufl</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>${project.groupId}</groupId>
			<artifactId>taverna-scufl2-api</artifactId>
			<version>${project.version}</version>
			<type>test-jar</type>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.jena</groupId>
			<artifactId>jena-osgi</artifactId>
			<version>${jena.version}</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
		</dependency>
		<dependency>
			<groupId>commons-beanutils</groupId>
			<artifactId>commons-beanutils</artifactId>
			<version>1.7.0</version>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<type>jar</type>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>1.9.3</version>
			<type>jar</type>
		</dependency>
		<dependency>
			<groupId>com.sun.jersey</groupId>
			<artifactId>jersey-client</artifactId>
			<version>1.11</version>
			<scope>compile</scope>
		</dependency>
	</dependencies>

</project>
