in wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/SftpWagon.java [288:333]
private void ftpRecursivePut( File sourceFile, String prefix, String fileName, int directoryMode )
throws TransferFailedException, SftpException
{
final RepositoryPermissions permissions = repository.getPermissions();
if ( sourceFile.isDirectory() )
{
// ScpHelper.getResourceFilename( destinationDirectory ) - could return empty string
if ( !fileName.equals( "." ) && !fileName.equals( "" ) )
{
prefix = getFileName( prefix, fileName );
mkdir( fileName, directoryMode );
channel.cd( fileName );
}
File[] files = sourceFile.listFiles();
if ( files != null && files.length > 0 )
{
// Directories first, then files. Let's go deep early.
for ( File file : files )
{
if ( file.isDirectory() )
{
ftpRecursivePut( file, prefix, file.getName(), directoryMode );
}
}
for ( File file : files )
{
if ( !file.isDirectory() )
{
ftpRecursivePut( file, prefix, file.getName(), directoryMode );
}
}
}
channel.cd( ".." );
}
else
{
Resource resource = ScpHelper.getResource( getFileName( prefix, fileName ) );
firePutInitiated( resource, sourceFile );
putFile( sourceFile, resource, permissions );
}
}