<?xml version="1.0"?>
<!--
  ~ 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
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
	xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.apache.hop</groupId>
		<artifactId>hop-plugins-actions</artifactId>
		<version>0.60</version>
	</parent>

	<artifactId>hop-action-ftp</artifactId>
	<packaging>jar</packaging>

	<name>Hop Plugins Actions Get/Put/Delete a file with FTP/FTPS/SFTP</name>

	<properties>
		<edtftpj.version>2.1.0</edtftpj.version>
		<trilead-ssh2.version>build213</trilead-ssh2.version>
		<ftp4che.version>0.7.1</ftp4che.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>com.enterprisedt</groupId>
			<artifactId>edtftpj</artifactId>
			<version>${edtftpj.version}</version>
			<exclusions>
				<exclusion>
					<groupId>*</groupId>
					<artifactId>*</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>trilead-ssh2</groupId>
			<artifactId>trilead-ssh2</artifactId>
			<version>${trilead-ssh2.version}</version>
			<exclusions>
				<exclusion>
					<groupId>*</groupId>
					<artifactId>*</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>ftp4che</groupId>
			<artifactId>ftp4che</artifactId>
			<version>${ftp4che.version}</version>
			<exclusions>
				<exclusion>
					<groupId>*</groupId>
					<artifactId>*</artifactId>
				</exclusion>
			</exclusions>
		</dependency>		
	</dependencies>
		
</project>