How to copy a directory using Ant

JavaAnt

Java Problem Overview


I have used copydir to copy a directory tree but it is deprecated. My directory contains some sub-directories, and some of those contain files and others contain more sub-directories.

How can I copy the entire tree?

Java Solutions


Solution 1 - Java

<copy todir="${dest.dir}" >  
    <fileset dir="${src.dir}" includes="**"/>  
</copy> 

believe that will do what you want... (Recursive copy done)

Solution 2 - Java

Copy contents including the directory itself.

<copy todir="${dest.dir}" >  
    <fileset dir="${src.dir.parent}">  
        <include name="${src.dir}/**"/>
    </fileset>
</copy>

Note: ${src.dir} is relative to ${src.dir.parent}, and not a full path

Solution 3 - Java

You should only have to specify the directory (sans the includes property):

<copy todir="../new/dir">
    <fileset dir="src_dir"/>
</copy>

See the manual for more details and examples.

Solution 4 - Java

Copy contents including the directory itself.

<copy todir="${dest.dir}" >  
  <fileset dir="${src.dir.parent}" includes="${src.dir}/**"/>
</copy>

Solution 5 - Java

A fine point: ant will only copy the sub-directories if the source files are newer than the destination files. [1] In my case, the sub-dirs were not being copied (I am using verbose="true"), since there were no changes and they were already in the destination. You can use "overwrite" to force it, or touch some of the files in your source sub-dirs.

Solution 6 - Java

I used include tags as shown in below code snippet in my build.xml file to copy individul jar files inside a 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>

Solution 7 - Java

From the example here, you can write a simple Ant file using copy task.

<project name="MyProject" default="copy" basedir=".">
<target name="copy">
<copy todir="./new/dir">
<fileset dir="src_dir"/>
</copy>
</target>
</project>

This should copy everything inside src_dir (excluding it) to new/dir.

Solution 8 - Java

I'm adding a more generic pattern to copy all subfolders.

<copy todir="${dest.dir}" >  
  <fileset dir="${src.dir}" includes="**/*"/>
</copy>

See Patterns for details.

Solution 9 - Java

Another ant task is Copydir. The key part here is to include the name of the directory you want to copy after the dest directory. The sub-directories and files will be copied automatically.

<target name="-post-jar">
    <copydir src="config" dest="${dist.dir}/config/"/>
</target>
 

Solution 10 - Java

This code should copy the folder as well as its contents. It also uses the basename task to avoid having to do any manual path parsing.

<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>

Solution 11 - Java

I finally copied using following code

<copy todir="${root.dir}/dist/src">  
				<fileset dir="${root.dir}/build/src" includes="**"/>  
			</copy>

This will copy the src folder from dist to build.

Hope this helps someone.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSunil Kumar SahooView Question on Stackoverflow
Solution 1 - JavaOmnipresentView Answer on Stackoverflow
Solution 2 - JavaeryView Answer on Stackoverflow
Solution 3 - Javas1nView Answer on Stackoverflow
Solution 4 - JavacmcgintyView Answer on Stackoverflow
Solution 5 - JavaJessView Answer on Stackoverflow
Solution 6 - JavaRaman BView Answer on Stackoverflow
Solution 7 - JavaNawaManView Answer on Stackoverflow
Solution 8 - JavasartorisView Answer on Stackoverflow
Solution 9 - JavaAndreiView Answer on Stackoverflow
Solution 10 - Javauser506069View Answer on Stackoverflow
Solution 11 - JavaDilip RajkumarView Answer on Stackoverflow