Ich habe copydir
einen Verzeichnisbaum kopiert, aber er ist veraltet. Mein Verzeichnis enthält einige Unterverzeichnisse, und einige enthalten Dateien, andere enthalten weitere Unterverzeichnisse.
Wie kann ich den gesamten Baum kopieren?
Ich habe copydir
einen Verzeichnisbaum kopiert, aber er ist veraltet. Mein Verzeichnis enthält einige Unterverzeichnisse, und einige enthalten Dateien, andere enthalten weitere Unterverzeichnisse.
Wie kann ich den gesamten Baum kopieren?
Antworten:
<copy todir="${dest.dir}" >
<fileset dir="${src.dir}" includes="**"/>
</copy>
glaube, das wird tun, was du willst ... (Rekursive Kopie fertig)
includes
nicht nötig, wenn du alles willst (siehe Antwort von Benutzer s1n )
Kopieren Sie den Inhalt einschließlich des Verzeichnisses.
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}">
<include name="${src.dir}/**"/>
</fileset>
</copy>
Hinweis: $ {src.dir} ist relativ zu $ {src.dir.parent} und kein vollständiger Pfad
x.parent
soll NICHT der parent
von x
... -_-
Sie sollten nur das Verzeichnis angeben müssen (ohne die Includes-Eigenschaft):
<copy todir="../new/dir">
<fileset dir="src_dir"/>
</copy>
Weitere Details und Beispiele finden Sie im Handbuch .
Kopieren Sie den Inhalt einschließlich des Verzeichnisses.
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}" includes="${src.dir}/**"/>
</copy>
Ein guter Punkt: ant kopiert die Unterverzeichnisse nur, wenn die Quelldateien neuer als die Zieldateien sind. [1] In meinem Fall wurden die Unterverzeichnisse nicht kopiert (ich verwende verbose = "true"), da es keine Änderungen gab und sie sich bereits im Ziel befanden. Sie können "Überschreiben" verwenden, um es zu erzwingen, oder einige der Dateien in Ihren Quell-Unterverzeichnissen berühren.
Ich habe Include-Tags verwendet, wie im folgenden Code-Snippet in meiner build.xml-Datei gezeigt, um einzelne JAR-Dateien in ein Verzeichnis zu kopieren.
<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>
Aus dem Beispiel hier können Sie eine einfache Ant-Datei mithilfe der Kopieraufgabe schreiben.
<project name="MyProject" default="copy" basedir=".">
<target name="copy">
<copy todir="./new/dir">
<fileset dir="src_dir"/>
</copy>
</target>
</project>
Dies sollte alles darin kopieren src_dir
(außer es) new/dir
.
Eine weitere Ameisenaufgabe ist Copydir . Der wichtigste Teil hier ist, den Namen des Verzeichnisses anzugeben, das Sie nach dem Zielverzeichnis kopieren möchten. Die Unterverzeichnisse und Dateien werden automatisch kopiert.
<target name="-post-jar">
<copydir src="config" dest="${dist.dir}/config/"/>
</target>
Dieser Code sollte den Ordner sowie dessen Inhalt kopieren. Außerdem wird die Basisnamen-Task verwendet, um zu vermeiden, dass eine manuelle Pfadanalyse durchgeführt werden muss.
<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>
Ich habe schließlich mit folgendem Code kopiert
<copy todir="${root.dir}/dist/src">
<fileset dir="${root.dir}/build/src" includes="**"/>
</copy>
Dadurch wird der src-Ordner von dist zum Erstellen kopiert.
Hoffe das hilft jemandem.