Задача муравья для копирования в Windows Share (SMB)
Вопрос
Существует ли задача ANT (аналогично задачам FTP или SCP), которая позволила бы мне копировать набор файлов в Share Windows (SMB)?
РЕДАКТИРОВАТЬ: Я должен был создать задачу, используя JCIF для этого. Если кому -то это нужно, вот код.
Зависит от JCIF и Apache Ioutils.
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import jcifs.smb.SmbFile;
import org.apache.commons.io.IOUtils;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.Copy;
public class SmbCopyTask extends Task
{
private File src;
private String tgt;
public void execute() throws BuildException
{
try
{
recursiveCopy(src);
}
catch (Exception e)
{
throw new BuildException(e);
}
}
public void recursiveCopy(File fileToCopy) throws IOException
{
String relativePath = src.toURI().relativize(fileToCopy.toURI()).getPath();
SmbFile smbFile = new SmbFile(tgt, relativePath);
if(!smbFile.exists())
{
smbFile.createNewFile();
}
if(!fileToCopy.isDirectory())
{
System.out.println(String.format("copying %s to %s", new Object[]{fileToCopy, smbFile}));
IOUtils.copy(new FileInputStream(fileToCopy), smbFile.getOutputStream());
}
else
{
File[] files = fileToCopy.listFiles();
for (int i = 0; i < files.length; i++)
{
recursiveCopy(files[i]);
}
}
}
public void setTgt(String tgt)
{
this.tgt = tgt;
}
public String getTgt()
{
return tgt;
}
public void setSrc(File src)
{
this.src = src;
}
public File getSrc()
{
return src;
}
}
Решение
Я не думаю, что для этого есть задача по боксу, но вы можете легко построить ее вокруг JCIFS (Реализация Java библиотеки Samba).
Другие советы
Вы должны быть в состоянии просто использовать копия Задача, пока ваша доля установлена.
Я использую библиотеки ANT, связанные с Eclipse (Windows), и я могу использовать задачу копирования для копирования файлов в сеть. Могу поспорить, что те же работы с Ant из командной строки также.
<copy todir="//server_name/share_name" overwrite="true" verbose="true">
<fileset dir="./WebContent">
<patternset refid="sources"/>
<different targetdir="//server_name/share_name" ignoreFileTimes="true"/>
</fileset></copy>
Не связан с StackOverflow