bodewig 2003/03/19 02:48:01
Modified: . WHATSNEW
docs/manual/OptionalTasks cab.html
src/main/org/apache/tools/ant/taskdefs/optional Cab.java
Log:
Make <cab>'s basedir optional.
PR: 18046
Revision Changes Path
1.368 +3 -0 ant/WHATSNEW
Index: WHATSNEW
===================================================================
RCS file: /home/cvs/ant/WHATSNEW,v
retrieving revision 1.367
retrieving revision 1.368
diff -u -r1.367 -r1.368
--- WHATSNEW 19 Mar 2003 10:09:38 -0000 1.367
+++ WHATSNEW 19 Mar 2003 10:48:01 -0000 1.368
@@ -169,6 +169,9 @@
* Support for HP's NonStop (Tandem) OS has been added.
+* <cab>'s basedir attribute is now optional if you specify nested
+ filesets. Bugzilla Report 18046.
+
Changes from Ant 1.5.2 to Ant 1.5.3
===================================
1.8 +22 -2 ant/docs/manual/OptionalTasks/cab.html
Index: cab.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/OptionalTasks/cab.html,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- cab.html 22 Jun 2002 23:38:28 -0000 1.7
+++ cab.html 19 Mar 2003 10:48:01 -0000 1.8
@@ -39,7 +39,7 @@
<tr>
<td valign="top">basedir</td>
<td valign="top">the directory to start archiving files from.</td>
- <td valign="top" align="center">Yes</td>
+ <td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top">verbose</td>
@@ -91,6 +91,13 @@
<td valign="top" align="center">No</td>
</tr>
</table>
+<h3>Parameters specified as nested elements</h3>
+<h4>fileset</h4>
+
+<p>The cab task supports any number of nested <a
+href="../CoreTypes/fileset.html"><code><fileset></code></a>
+elements to specify the files to be included in the archive.</p>
+
<h3>Examples</h3>
<blockquote><pre>
<cab cabfile="${dist}/manual.cab"
@@ -121,8 +128,21 @@
directory api are archived, and files with the name todo.html are
excluded. Output from the cabarc tool is displayed in the build
output.</p>
+
+<blockquote><pre>
+<cab cabfile="${dist}/manual.cab"
+ verbose="yes">
+ <fileset
+ dir="htdocs/manual"
+ includes="api/**/*.html"
+ excludes="**/todo.html"
+ />
+</cab>
+</pre></blockquote>
+<p>is equivalent to the example above.</p>
+
<hr>
-<p align="center">Copyright © 2000-2002 Apache Software Foundation. All
rights
+<p align="center">Copyright © 2000-2003 Apache Software Foundation. All
rights
Reserved.</p>
</body>
1.25 +20 -15
ant/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java
Index: Cab.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- Cab.java 10 Feb 2003 14:13:45 -0000 1.24
+++ Cab.java 19 Mar 2003 10:48:01 -0000 1.25
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2000-2002 The Apache Software Foundation. All rights
+ * Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -143,14 +143,17 @@
* for side-effects to me...
*/
protected void checkConfiguration() throws BuildException {
- if (baseDir == null) {
- throw new BuildException("basedir attribute must be set!",
getLocation());
+ if (baseDir == null && filesets.size() == 0) {
+ throw new BuildException("basedir attribute or at least one "
+ + "nested filest is required!",
+ getLocation());
}
- if (!baseDir.exists()) {
+ if (baseDir != null && !baseDir.exists()) {
throw new BuildException("basedir does not exist!",
getLocation());
}
if (cabFile == null) {
- throw new BuildException("cabfile attribute must be set!" ,
getLocation());
+ throw new BuildException("cabfile attribute must be set!",
+ getLocation());
}
}
@@ -175,7 +178,7 @@
boolean upToDate = true;
for (int i = 0; i < files.size() && upToDate; i++) {
String file = files.elementAt(i).toString();
- if (new File(baseDir, file).lastModified() >
+ if (fileUtils.resolveFile(baseDir, file).lastModified() >
cabFile.lastModified()) {
upToDate = false;
}
@@ -220,16 +223,16 @@
protected Vector getFileList() throws BuildException {
Vector files = new Vector();
- if (filesets.size() == 0) {
+ if (baseDir != null) {
// get files from old methods - includes and nested include
appendFiles(files, super.getDirectoryScanner(baseDir));
- } else {
- // get files from filesets
- for (int i = 0; i < filesets.size(); i++) {
- FileSet fs = (FileSet) filesets.elementAt(i);
- if (fs != null) {
- appendFiles(files, fs.getDirectoryScanner(getProject()));
- }
+ }
+
+ // get files from filesets
+ for (int i = 0; i < filesets.size(); i++) {
+ FileSet fs = (FileSet) filesets.elementAt(i);
+ if (fs != null) {
+ appendFiles(files, fs.getDirectoryScanner(getProject()));
}
}
@@ -264,7 +267,9 @@
try {
Process p = Execute.launch(getProject(),
new String[] {"listcab"}, null,
- baseDir, true);
+ baseDir != null ? baseDir
+ :
getProject().getBaseDir(),
+ true);
OutputStream out = p.getOutputStream();
// Create the stream pumpers to forward listcab's stdout and
stderr to the log