Pregunta

¿Hay una tarea de hormiga (similar a ftp o tareas SCP) que permitiría que copie un conjunto de archivos en un (SMB) de Windows?

Editar: tuve que crear una tarea utilizando JCIFS para esto. Si alguien lo necesita, aquí está el código.

depende de la JCIFS y ioutils Apache.

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;
   }
}
¿Fue útil?

Solución

No creo que hay un fuera de la caja tarea ant para eso, pero aquí se puede construir uno en torno JCIFS (una implementación de Java de la biblioteca Samba).

Otros consejos

Usted debe ser capaz de usar sólo el href="http://ant.apache.org/manual/Tasks/copy.html" rel="nofollow copiar tarea, siempre como se monta su parte.

Estoy usando las bibliotecas ANT integrado con Eclipse (Windows) y puedo usar la tarea de copia para copiar los archivos a un recurso compartido de red. Apuesto a los mismos trabajos con ANT desde la línea de comandos también.

<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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top