diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
index 57f9ae075..3f45df7fd 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
@@ -46,6 +46,7 @@ import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.commons.net.ftp.FTPConnectionClosedException;
+import org.apache.commons.net.ftp.FTPSClient;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.Project;
@@ -59,6 +60,8 @@ import org.apache.tools.ant.util.RetryHandler;
import org.apache.tools.ant.util.Retryable;
import org.apache.tools.ant.util.VectorSet;
+import javax.net.ssl.HostnameVerifier;
+
/**
* Basic FTP client. Performs the following actions:
*
@@ -112,6 +115,8 @@ public class FTP extends Task implements FTPTaskConfig {
private String userid;
private String password;
private String account;
+ private boolean useFtps =false;
+ private HostnameVerifier hostnameVerifier;
private File listing;
private boolean binary = true;
private boolean passive = false;
@@ -1263,6 +1268,17 @@ public class FTP extends Task implements FTPTaskConfig {
this.userid = userid;
}
+ public void setUseFtps(boolean useFtps) {
+ this.useFtps = useFtps;
+ }
+
+ public HostnameVerifier getHostnameVerifier() {
+ return hostnameVerifier;
+ }
+
+ public void setHostnameVerifier(HostnameVerifier hostnameVerifier) {
+ this.hostnameVerifier = hostnameVerifier;
+ }
/**
* Sets the login password for the given user id.
@@ -2502,8 +2518,14 @@ public class FTP extends Task implements FTPTaskConfig {
try {
log("Opening FTP connection to " + server, Project.MSG_VERBOSE);
-
- ftp = new FTPClient();
+ if( useFtps) {
+ ftp = new FTPSClient();
+ if(hostnameVerifier != null){
+ ((FTPSClient)ftp).setHostnameVerifier(hostnameVerifier);
+ }
+ }else{
+ ftp = new FTPClient();
+ }
if (this.isConfigurationSet) {
ftp = FTPConfigurator.configure(ftp, this);
}