<?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.language</groupId>
		<artifactId>apache-taverna-language</artifactId>
		<version>0.16.0-incubating-SNAPSHOT</version>
	</parent>
	<artifactId>taverna-scufl2-ucfpackage</artifactId>
	<packaging>bundle</packaging>
	<name>Apache Taverna Scufl 2 UCF Package</name>
	<description>Adobe UCF compatible Package API, making a structured ZIP file with manifest</description>
	<dependencies>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
      <version>${commons.io.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
      <groupId>org.jdom</groupId>
      <artifactId>com.springsource.org.jdom</artifactId>
      <version>${jdom.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>jaxen</groupId>
			<artifactId>jaxen</artifactId>
      <version>${jaxen.version}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>${project.parent.groupId}</groupId>
			<artifactId>taverna-robundle</artifactId>
			<version>${project.parent.version}</version>
		</dependency>
	</dependencies>
	<licenses>
		<license>
			<name>Apache 2</name>
			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
			<comments>The package org.apache.taverna.scufl2.ucfpackage.impl.odfdom
				contains a patched subset of ODFDOM 0.8.6 -
				http://odftoolkit.org/projects/odfdom/pages/Home
				Copyright 2008, 2010 Oracle and/or its affiliates.
				All rights reserved. Copyright 2009 IBM. All rights reserved.</comments>
		</license>
	</licenses>

</project>
