Ho usato copydir
per copiare un albero di directory ma è deprecato. La mia directory contiene alcune sottodirectory e alcune di esse contengono file e altre contengono più sottodirectory.
Come posso copiare l'intero albero?
Ho usato copydir
per copiare un albero di directory ma è deprecato. La mia directory contiene alcune sottodirectory e alcune di esse contengono file e altre contengono più sottodirectory.
Come posso copiare l'intero albero?
Risposte:
<copy todir="${dest.dir}" >
<fileset dir="${src.dir}" includes="**"/>
</copy>
credi che farà quello che vuoi ... (Copia ricorsiva fatta)
includes
non è necessario quando vuoi tutto (vedi risposta dell'utente s1n )
Copia i contenuti inclusa la directory stessa.
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}">
<include name="${src.dir}/**"/>
</fileset>
</copy>
Nota: $ {src.dir} è relativo a $ {src.dir.parent} e non è un percorso completo
x.parent
dovrebbe NON ESSERE il parent
di x
... -_-
Dovresti solo specificare la directory (senza la proprietà include):
<copy todir="../new/dir">
<fileset dir="src_dir"/>
</copy>
Vedere il manuale per ulteriori dettagli ed esempi.
Copia i contenuti inclusa la directory stessa.
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}" includes="${src.dir}/**"/>
</copy>
Un bel punto: ant copierà le sottodirectory solo se i file di origine sono più recenti dei file di destinazione. [1] Nel mio caso, le sottodirectory non venivano copiate (sto usando verbose = "true"), poiché non c'erano modifiche ed erano già nella destinazione. Puoi usare "sovrascrittura" per forzarlo, o toccare alcuni dei file nelle tue sottodirectory di origine.
Ho usato i tag include come mostrato nello snippet di codice di seguito nel mio file build.xml per copiare i singoli file jar all'interno di una directory.
<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>
Dall'esempio qui , puoi scrivere un semplice file Ant utilizzando l'attività di copia.
<project name="MyProject" default="copy" basedir=".">
<target name="copy">
<copy todir="./new/dir">
<fileset dir="src_dir"/>
</copy>
</target>
</project>
Questo dovrebbe copiare tutto all'interno src_dir
(escluso) in new/dir
.
Un altro compito delle formiche è Copydir . La parte fondamentale qui è includere il nome della directory che si desidera copiare dopo la directory di destinazione. Le sottodirectory e i file verranno copiati automaticamente.
<target name="-post-jar">
<copydir src="config" dest="${dist.dir}/config/"/>
</target>
Questo codice dovrebbe copiare la cartella e il suo contenuto. Utilizza anche l'attività basename per evitare di dover eseguire alcuna analisi manuale del percorso.
<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>
Alla fine ho copiato usando il seguente codice
<copy todir="${root.dir}/dist/src">
<fileset dir="${root.dir}/build/src" includes="**"/>
</copy>
Questo copierà la cartella src da dist a build.
Spero che questo aiuti qualcuno.