Kiedyś copydir
kopiowałem drzewo katalogów, ale jest przestarzałe. Mój katalog zawiera kilka podkatalogów, a niektóre z nich zawierają pliki, a inne zawierają więcej podkatalogów.
Jak mogę skopiować całe drzewo?
Kiedyś copydir
kopiowałem drzewo katalogów, ale jest przestarzałe. Mój katalog zawiera kilka podkatalogów, a niektóre z nich zawierają pliki, a inne zawierają więcej podkatalogów.
Jak mogę skopiować całe drzewo?
Odpowiedzi:
<copy todir="${dest.dir}" >
<fileset dir="${src.dir}" includes="**"/>
</copy>
uwierz, że zrobi to, co chcesz ... (kopia rekurencyjna wykonana)
includes
nie jest to konieczne, gdy chcesz wszystkiego (zobacz odpowiedź użytkownika s1n )
Skopiuj zawartość, w tym sam katalog.
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}">
<include name="${src.dir}/**"/>
</fileset>
</copy>
Uwaga: $ {src.dir} jest odniesieniem do $ {src.dir.parent}, a nie pełną ścieżką
x.parent
ma nie być parent
z x
... -_-
Powinieneś tylko określić katalog (bez właściwości include):
<copy todir="../new/dir">
<fileset dir="src_dir"/>
</copy>
Więcej szczegółów i przykładów znajdziesz w instrukcji .
Skopiuj zawartość, w tym sam katalog.
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}" includes="${src.dir}/**"/>
</copy>
Dobra uwaga: ant skopiuje podkatalogi tylko wtedy, gdy pliki źródłowe są nowsze niż pliki docelowe. [1] W moim przypadku podkatalogi nie były kopiowane (używam verbose = "true"), ponieważ nie było żadnych zmian i były już w miejscu docelowym. Możesz użyć „overwrite”, aby wymusić to, lub dotknąć niektórych plików w źródłowych katalogach podrzędnych.
Użyłem tagów dołączania, jak pokazano na poniższym fragmencie kodu w moim pliku build.xml, aby skopiować pojedyncze pliki jar do katalogu.
<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>
Z przykładu tutaj można napisać prosty plik, używając Ant zadanie kopiowania.
<project name="MyProject" default="copy" basedir=".">
<target name="copy">
<copy todir="./new/dir">
<fileset dir="src_dir"/>
</copy>
</target>
</project>
Powinno to skopiować wszystko, co jest w środku src_dir
(z wyłączeniem tego) do new/dir
.
Kolejnym zadaniem mrówek jest Copydir . Kluczową częścią jest dołączenie nazwy katalogu, który chcesz skopiować po katalogu docelowym. Podkatalogi i pliki zostaną skopiowane automatycznie.
<target name="-post-jar">
<copydir src="config" dest="${dist.dir}/config/"/>
</target>
Ten kod powinien skopiować folder, a także jego zawartość. Używa również zadania basename, aby uniknąć konieczności ręcznego analizowania ścieżki.
<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>
W końcu skopiowałem używając następującego kodu
<copy todir="${root.dir}/dist/src">
<fileset dir="${root.dir}/build/src" includes="**"/>
</copy>
Spowoduje to skopiowanie folderu src z dist do build.
Mam nadzieję, że to komuś pomoże.