ฉันเคยcopydir
คัดลอกแผนผังไดเร็กทอรี แต่เลิกใช้แล้ว ไดเร็กทอรีของฉันมีไดเร็กทอรีย่อยบางไดเร็กทอรีและบางไดเร็กทอรีมีไฟล์และอื่น ๆ มีไดเร็กทอรีย่อยเพิ่มเติม
ฉันจะคัดลอกต้นไม้ทั้งหมดได้อย่างไร?
ฉันเคยcopydir
คัดลอกแผนผังไดเร็กทอรี แต่เลิกใช้แล้ว ไดเร็กทอรีของฉันมีไดเร็กทอรีย่อยบางไดเร็กทอรีและบางไดเร็กทอรีมีไฟล์และอื่น ๆ มีไดเร็กทอรีย่อยเพิ่มเติม
ฉันจะคัดลอกต้นไม้ทั้งหมดได้อย่างไร?
คำตอบ:
<copy todir="${dest.dir}" >
<fileset dir="${src.dir}" includes="**"/>
</copy>
เชื่อว่าจะทำในสิ่งที่คุณต้องการ ... (ทำสำเนาซ้ำ)
includes
ไม่จำเป็นเมื่อคุณต้องการทุกอย่าง (ดูคำตอบโดยผู้ใช้s1n )
คัดลอกเนื้อหารวมถึงไดเร็กทอรีเอง
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}">
<include name="${src.dir}/**"/>
</fileset>
</copy>
หมายเหตุ: $ {src.dir} สัมพันธ์กับ $ {src.dir.parent} ไม่ใช่เส้นทางแบบเต็ม
x.parent
ไม่ควรเป็นparent
ของx
... -_-
คุณควรระบุไดเร็กทอรีเท่านั้น (มีคุณสมบัติรวม):
<copy todir="../new/dir">
<fileset dir="src_dir"/>
</copy>
ดูคู่มือสำหรับรายละเอียดและตัวอย่างเพิ่มเติม
คัดลอกเนื้อหารวมถึงไดเร็กทอรีเอง
<copy todir="${dest.dir}" >
<fileset dir="${src.dir.parent}" includes="${src.dir}/**"/>
</copy>
จุดดี: มดจะคัดลอกไดเร็กทอรีย่อยก็ต่อเมื่อไฟล์ต้นทางใหม่กว่าไฟล์ปลายทาง [1]ในกรณีของฉัน dirs ย่อยไม่ได้ถูกคัดลอก (ฉันใช้ verbose = "true") เนื่องจากไม่มีการเปลี่ยนแปลงใด ๆ และอยู่ในปลายทางแล้ว คุณสามารถใช้ "เขียนทับ" เพื่อบังคับหรือแตะไฟล์บางไฟล์ในไดร์ซับซอร์สของคุณ
ฉันใช้แท็กรวมตามที่แสดงในส่วนข้อมูลโค้ดด้านล่างในไฟล์ build.xml ของฉันเพื่อคัดลอกไฟล์ jar ของตัวเองภายในไดเร็กทอรี
<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>
จากตัวอย่างที่นี่คุณสามารถเขียนไฟล์ Ant ง่ายๆโดยใช้งานการคัดลอก
<project name="MyProject" default="copy" basedir=".">
<target name="copy">
<copy todir="./new/dir">
<fileset dir="src_dir"/>
</copy>
</target>
</project>
นี้ควรคัดลอกภายในทุกอย่างsrc_dir
(ไม่รวมมัน) new/dir
เพื่อ
ฉันกำลังเพิ่มรูปแบบทั่วไปเพื่อคัดลอกโฟลเดอร์ย่อยทั้งหมด
<copy todir="${dest.dir}" >
<fileset dir="${src.dir}" includes="**/*"/>
</copy>
ดูรูปแบบสำหรับรายละเอียด
รหัสนี้ควรคัดลอกโฟลเดอร์รวมทั้งเนื้อหา นอกจากนี้ยังใช้งานชื่อฐานเพื่อหลีกเลี่ยงการแยกวิเคราะห์เส้นทางด้วยตนเอง
<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>
ในที่สุดฉันก็คัดลอกโดยใช้รหัสต่อไปนี้
<copy todir="${root.dir}/dist/src">
<fileset dir="${root.dir}/build/src" includes="**"/>
</copy>
เพื่อ copy โฟลเดอร์ src จาก dist ไป build
หวังว่านี่จะช่วยใครบางคนได้