<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<parent>
		<artifactId>mft-transport</artifactId>
		<groupId>org.apache.airavata</groupId>
		<version>0.01-SNAPSHOT</version>
	</parent>
	<modelVersion>4.0.0</modelVersion>

	<groupId>org.apache.airavata</groupId>

	<artifactId>mft-dropbox-transport</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>mft-dropbox-transport</name>
	<description>MFT dropbox transport</description>

	<dependencies>
		<dependency>
			<groupId>org.apache.airavata</groupId>
			<artifactId>mft-core</artifactId>
			<version>0.01-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>com.dropbox.core</groupId>
			<artifactId>dropbox-core-sdk</artifactId>
			<version>3.1.3</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>${maven.assembly.plugin}</version>
				<executions>
					<execution>
						<id>mft-transport-build</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
						<configuration>
							<tarLongFileMode>posix</tarLongFileMode>
							<finalName>dropbox-transport</finalName>
							<descriptors>
								<descriptor>src/main/assembly/transport-assembly.xml</descriptor>
							</descriptors>
							<attach>false</attach>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-antrun-plugin</artifactId>
				<version>1.8</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>run</goal>
						</goals>
						<configuration>
							<tasks>
								<echo>Moving Transport Plugin to plugins directory</echo>
								<copy file="${basedir}/target/dropbox-transport-bin.zip" tofile="${project.basedir}/../../plugins/dropbox-transport-bin.zip"/>
							</tasks>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
