Eu costumava copydir
copiar uma árvore de diretórios, mas ela está obsoleta. Meu diretório contém alguns subdiretórios, e alguns deles contêm arquivos e outros contêm mais subdiretórios.
Como posso copiar a árvore inteira?
Eu costumava copydir
copiar uma árvore de diretórios, mas ela está obsoleta. Meu diretório contém alguns subdiretórios, e alguns deles contêm arquivos e outros contêm mais subdiretórios.
Como posso copiar a árvore inteira?
Respostas:
<copy todir="${dest.dir}" >
<fileset dir="${src.dir}" includes="**"/>
</copy>
acredite que vai fazer o que quiser ... (cópia recursiva feita)
includes
não é necessário quando você quer tudo (ver a resposta do usuário s1n )
Copie o conteúdo, incluindo o próprio diretório.
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}">
<include name="${src.dir}/**"/>
</fileset>
</copy>
Nota: $ {src.dir} é relativo a $ {src.dir.parent}, e não um caminho completo
x.parent
NÃO SER o parent
de x
... -_-
Você deve apenas especificar o diretório (sem a propriedade includes):
<copy todir="../new/dir">
<fileset dir="src_dir"/>
</copy>
Veja o manual para mais detalhes e exemplos.
Copie o conteúdo, incluindo o próprio diretório.
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}" includes="${src.dir}/**"/>
</copy>
Um ponto importante: o ant só copiará os subdiretórios se os arquivos de origem forem mais recentes que os arquivos de destino. [1] No meu caso, os sub-dirs não estavam sendo copiados (estou usando verbose = "true"), pois não houve alterações e eles já estavam no destino. Você pode usar "substituir" para forçá-lo ou tocar em alguns dos arquivos em seus sub-diretórios de origem.
Eu usei tags include, conforme mostrado no fragmento de código abaixo, em meu arquivo build.xml para copiar arquivos jar individuais dentro de um diretório.
<target name="devInstall" depends="generateXsl" description="testing">
<copy flatten="true" todir="${test}/WEB-INF/lib" overwrite="${overwrite}">
<fileset refid="buildJars"/>
<fileset dir="lib">
<include name="commons-collections-*.jar"/>
<include name="commons-io-*.jar"/>
<include name="kodo/*.jar"/>
<include name="mail*.jar"/>
<include name="activation*.jar"/>
<include name="guava*.jar"/>
<include name="jna*.jar"/>
</fileset>
</copy>
</target>
A partir do exemplo aqui , você pode escrever um arquivo Ant simples usando a tarefa de cópia.
<project name="MyProject" default="copy" basedir=".">
<target name="copy">
<copy todir="./new/dir">
<fileset dir="src_dir"/>
</copy>
</target>
</project>
Isso deve copiar tudo dentro src_dir
(excluindo-o) para new/dir
.
Outra tarefa da formiga é Copydir . A parte principal aqui é incluir o nome do diretório que você deseja copiar após o diretório dest. Os subdiretórios e arquivos serão copiados automaticamente.
<target name="-post-jar">
<copydir src="config" dest="${dist.dir}/config/"/>
</target>
Este código deve copiar a pasta, bem como seu conteúdo. Ele também usa a tarefa de nome de base para evitar ter que fazer qualquer análise manual de caminho.
<project name="Build" default="doCopy">
<property name="source.dir" value="SourceDirPathGoesHere"/>
<property name="dest.dir" value="DestinationDirPathGoesHere"/>
<target name="doCopy">
<basename property="source.dir.base.name" file="${source.dir}"/>
<copy todir="${dest.dir}">
<fileset dir="${source.dir}/.." includes="${source.dir.base.name}/**"/>
</copy>
</target>
</project>
Eu finalmente copiei usando o seguinte código
<copy todir="${root.dir}/dist/src">
<fileset dir="${root.dir}/build/src" includes="**"/>
</copy>
Isso copiará a pasta src de dist para o build.
Espero que isso ajude alguém.