Browse Source

Removed dir attribute from Copy and

Move tasks.  Now you can only copy 
or move entire directories with 
nested FileSets.

Prompted by a patch submitted by
Nico Seessle.


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268061 13f79535-47bb-0310-9956-ffa450edef68
master
glennm 24 years ago
parent
commit
9f766c7fa0
4 changed files with 46 additions and 49 deletions
  1. +33
    -11
      build.xml
  2. +8
    -10
      docs/index.html
  3. +4
    -22
      src/main/org/apache/tools/ant/taskdefs/Copy.java
  4. +1
    -6
      src/main/org/apache/tools/ant/taskdefs/Move.java

+ 33
- 11
build.xml View File

@@ -136,7 +136,9 @@
<!-- =================================================================== -->
<target name="main" depends="jar" description="Creates the binary structure">
<mkdir dir="${bin.dir}"/>
<copy dir="${src.bin.dir}" todir="${bin.dir}"/>
<copy todir="${bin.dir}">
<fileset dir="${src.bin.dir}"/>
</copy>
<chmod perm="+x">
<fileset dir="${bin.dir}">
<patternset refid="chmod.patterns"/>
@@ -173,13 +175,23 @@
<mkdir dir="${ant.dist.dir}/docs/api"/>
<mkdir dir="${ant.dist.dir}/src"/>

<copy dir="${src.dir}" todir="${ant.dist.dir}/src"/>
<copy dir="${lib.dir}" todir="${ant.dist.dir}/lib"/>
<copy todir="${ant.dist.dir}/src">
<fileset dir="${src.dir}"/>
</copy>
<copy todir="${ant.dist.dir}/lib">
<fileset dir="${lib.dir}"/>
</copy>

<copy file="build.xml" tofile="${ant.dist.dir}/lib/build.xml"/>
<copy dir="src/bin" todir="${ant.dist.dir}/bin"/>
<copy dir="${docs.dir}" todir="${ant.dist.dir}/docs"/>
<copy dir="${build.javadocs}" todir="${ant.dist.dir}/docs/api"/>
<copy todir="${ant.dist.dir}/bin">
<fileset dir="src/bin"/>
</copy>
<copy todir="${ant.dist.dir}/docs">
<fileset dir="${docs.dir}"/>
</copy>
<copy todir="${ant.dist.dir}/docs/api">
<fileset dir="${build.javadocs}"/>
</copy>

<fixcrlf srcdir="${ant.dist.dir}/bin" includes="ant,antRun" cr="remove"/>
<fixcrlf srcdir="${ant.dist.dir}/bin" includes="*.bat" cr="add"/>
@@ -215,14 +227,20 @@
<!-- =================================================================== -->
<target name="bootstrap" depends="main" description="Installs the ant.jar library and binary files into ant.home">
<echo message="copying bootstrapped files into bin and lib"/>
<copy dir="${lib.dir}" todir="lib"/>
<copy dir="${bin.dir}" todir="bin"/>
<copy todir="lib">
<fileset dir="${lib.dir}"/>
</copy>
<copy todir="bin">
<fileset dir="${bin.dir}"/>
</copy>
</target>

<target name="install" depends="dist" if="ant.install">
<echo message="installing full copy of ant into ${ant.install}"/>
<mkdir dir="${ant.install}"/>
<copy dir="${ant.dist.dir}" todir="${ant.install}"/>
<copy todir="${ant.install}">
<fileset dir="${ant.dist.dir}"/>
</copy>
<chmod perm="+x">
<fileset dir="${ant.install}/bin">
<patternset refid="chmod.patterns"/>
@@ -235,8 +253,12 @@
<target name="mininstall" depends="main" if="ant.install">
<echo message="copy minimal ant installation into ${ant.install}"/>
<mkdir dir="${ant.install}"/>
<copy dir="${lib.dir}" todir="${ant.install}/lib"/>
<copy dir="${bin.dir}" todir="${ant.install}/bin"/>
<copy todir="${ant.install}/lib">
<fileset dir="${lib.dir}"/>
</copy>
<copy todir="${ant.install}/bin">
<fileset dir="${bin.dir}"/>
</copy>
<chmod perm="+x">
<fileset dir="${ant.install}/bin">
<patternset refid="chmod.patterns"/>


+ 8
- 10
docs/index.html View File

@@ -1176,7 +1176,7 @@ permissions.</p>
<hr>
<h2><a name="copy">Copy</a></h2>
<h3>Description</h3>
<p>Copies a file or directory to a new file or directory. Files are
<p>Copies a file or Fileset to a new file or directory. Files are
only copied if the source file is newer than the destination file,
or when the destination file does not exist. However, you can explicitly
overwrite files with the <var>overwrite</var> attribute.</p>
@@ -1192,19 +1192,15 @@ To use a fileset, the <var>todir</var> attribute must be set.</p>
<tr>
<td valign="top">file</td>
<td valign="top">the file to copy</td>
<td valign="top" align="center" rowspan="2">One of <var>file</var> or
<var>dir</var> are required, or at least one nested fileset element.</td>
</tr>
<tr>
<td valign="top">dir</td>
<td valign="top">the directory to copy</td>
<td valign="top" align="center">One of either <var>file</var> or
at least one nested fileset element.</td>
</tr>
<tr>
<td valign="top">tofile</td>
<td valign="top">the file to copy to</td>
<td valign="top" align="center" rowspan="2">With the <var>file</var> attribute,
either <var>tofile</var> or <var>todir</var> can be used. With the <var>dir</var>
attribute and nested filesets, only <var>todir</var> is allowed.</td>
either <var>tofile</var> or <var>todir</var> can be used. With nested filesets,
only <var>todir</var> is allowed.</td>
</tr>
<tr>
<td valign="top">todir</td>
@@ -1241,7 +1237,9 @@ To use a fileset, the <var>todir</var> attribute must be set.</p>
</pre>
<p><b>Copy a directory to another directory</b></p>
<pre>
&lt;copy dir=&quot;src_dir&quot; todir=&quot;../new/dir&quot; /&gt;
&lt;copy todir=&quot;../new/dir&quot;&gt;
&lt;fileset dir=&quot;src_dir&quot;/&gt;
&lt;/copy&gt;
</pre>
<p><b>Copy a set of files to a directory</b></p>
<pre>


+ 4
- 22
src/main/org/apache/tools/ant/taskdefs/Copy.java View File

@@ -74,7 +74,6 @@ import java.util.*;
*/
public class Copy extends Task {
protected File file = null; // the source file
protected File dir = null; // the source directory
protected File destFile = null; // the destination file
protected File destDir = null; // the destination directory
protected Vector filesets = new Vector();
@@ -93,13 +92,6 @@ public class Copy extends Task {
this.file = file;
}

/**
* Sets a directory to copy.
*/
public void setDir(File dir) {
this.dir = dir;
}

/**
* Sets the destination file.
*/
@@ -176,16 +168,6 @@ public class Copy extends Task {
}
}

// deal with the directory
if (dir != null) {
DirectoryScanner ds = new DirectoryScanner();
ds.setBasedir(dir);
ds.scan(); // include EVERYTHING

String[] srcFiles = ds.getIncludedFiles();
scan(dir, destDir, srcFiles); // add to fileCopyMap
}

// deal with the filesets
for (int i=0; i<filesets.size(); i++) {
FileSet fs = (FileSet) filesets.elementAt(i);
@@ -209,8 +191,8 @@ public class Copy extends Task {
* of attributes.
*/
protected void validateAttributes() throws BuildException {
if (file == null && dir == null && filesets.size() == 0) {
throw new BuildException("Specify at least one source - a file, a dir, or a fileset.");
if (file == null && filesets.size() == 0) {
throw new BuildException("Specify at least one source - a file or a fileset.");
}

if (destFile != null && destDir != null) {
@@ -221,8 +203,8 @@ public class Copy extends Task {
throw new BuildException("One of destfile or destdir must be set.");
}

if (dir != null && destFile != null) {
throw new BuildException("Cannot copy a directory into a file.");
if (file != null && destFile != null && file.exists() && file.isDirectory()) {
throw new BuildException("Use the dir attribute to copy directories.");
}

if (destFile != null && filesets.size() > 0) {


+ 1
- 6
src/main/org/apache/tools/ant/taskdefs/Move.java View File

@@ -86,11 +86,6 @@ public class Move extends Copy {

public void execute() throws BuildException {
super.execute();

// take care of the source directory
if (dir != null && dir.exists()) {
deleteDir(dir);
}
}

//************************************************************************
@@ -139,7 +134,7 @@ public class Move extends Copy {
}
log("Deleting directory " + d.getAbsolutePath(), verbosity);
if (!d.delete()) {
throw new BuildException("Unable to delete directory " + dir.getAbsolutePath());
throw new BuildException("Unable to delete directory " + d.getAbsolutePath());
}
}



Loading…
Cancel
Save