retaining backwards compatibility. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@267585 13f79535-47bb-0310-9956-ffa450edef68master
@@ -67,11 +67,12 @@ import java.util.*; | |||||
public class Copydir extends Task { | public class Copydir extends Task { | ||||
public File srcDir; | |||||
public File destDir; | |||||
private File srcDir; | |||||
private File destDir; | |||||
private String[] includes; | |||||
private String[] excludes; | |||||
private boolean useDefaultExcludes = true; | |||||
private Hashtable filecopyList = new Hashtable(); | private Hashtable filecopyList = new Hashtable(); | ||||
private Vector ignoreList = new Vector(); | |||||
public void setSrc(String src) { | public void setSrc(String src) { | ||||
srcDir = project.resolveFile(src); | srcDir = project.resolveFile(src); | ||||
@@ -81,8 +82,85 @@ public class Copydir extends Task { | |||||
destDir = project.resolveFile(dest); | destDir = project.resolveFile(dest); | ||||
} | } | ||||
/** | |||||
* Sets the set of include patterns. Patterns may be separated by a comma | |||||
* or a space. | |||||
* | |||||
* @param includes the string containing the include patterns | |||||
*/ | |||||
public void setIncludes(String includes) { | |||||
if (includes != null && includes.length() > 0) { | |||||
Vector tmpIncludes = new Vector(); | |||||
StringTokenizer tok = new StringTokenizer(includes, ", ", false); | |||||
while (tok.hasMoreTokens()) { | |||||
String pattern = tok.nextToken().trim(); | |||||
if (pattern.length() > 0) { | |||||
tmpIncludes.addElement(pattern); | |||||
} | |||||
} | |||||
this.includes = new String[tmpIncludes.size()]; | |||||
for (int i = 0; i < tmpIncludes.size(); i++) { | |||||
this.includes[i] = (String)tmpIncludes.elementAt(i); | |||||
} | |||||
} else { | |||||
this.includes = null; | |||||
} | |||||
} | |||||
/** | |||||
* Sets the set of exclude patterns. Patterns may be separated by a comma | |||||
* or a space. | |||||
* | |||||
* @param excludes the string containing the exclude patterns | |||||
*/ | |||||
public void setExcludes(String excludes) { | |||||
if (excludes != null && excludes.length() > 0) { | |||||
Vector tmpExcludes = new Vector(); | |||||
StringTokenizer tok = new StringTokenizer(excludes, ", ", false); | |||||
while (tok.hasMoreTokens()) { | |||||
String pattern = tok.nextToken().trim(); | |||||
if (pattern.length() > 0) { | |||||
tmpExcludes.addElement(pattern); | |||||
} | |||||
} | |||||
this.excludes = new String[tmpExcludes.size()]; | |||||
for (int i = 0; i < tmpExcludes.size(); i++) { | |||||
this.excludes[i] = (String)tmpExcludes.elementAt(i); | |||||
} | |||||
} else { | |||||
this.excludes = null; | |||||
} | |||||
} | |||||
/** | |||||
* Sets whether default exclusions should be used or not. | |||||
* | |||||
* @param useDefaultExcludes "true" or "on" when default exclusions should | |||||
* be used, "false" or "off" when they | |||||
* shouldn't be used. | |||||
*/ | |||||
public void setDefaultexcludes(String useDefaultExcludes) { | |||||
this.useDefaultExcludes = Project.toBoolean(useDefaultExcludes); | |||||
} | |||||
public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
scanDir(srcDir, destDir); | |||||
if (srcDir == null) { | |||||
throw new BuildException("srcdir attribute must be set!"); | |||||
} | |||||
if (!srcDir.exists()) { | |||||
throw new BuildException("srcdir does not exist!"); | |||||
} | |||||
DirectoryScanner ds = new DirectoryScanner(); | |||||
ds.setBasedir(srcDir); | |||||
ds.setIncludes(includes); | |||||
ds.setExcludes(excludes); | |||||
if (useDefaultExcludes) { | |||||
ds.addDefaultExcludes(); | |||||
} | |||||
ds.scan(); | |||||
String[] files = ds.getIncludedFiles(); | |||||
scanDir(srcDir, destDir, files); | |||||
if (filecopyList.size() > 0) { | if (filecopyList.size() > 0) { | ||||
project.log("Copying " + filecopyList.size() + " files to " | project.log("Copying " + filecopyList.size() + " files to " | ||||
+ destDir.getAbsolutePath()); | + destDir.getAbsolutePath()); | ||||
@@ -115,38 +193,32 @@ public class Copydir extends Task { | |||||
@author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a> | @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a> | ||||
*/ | */ | ||||
public void setIgnore(String ignoreString) { | public void setIgnore(String ignoreString) { | ||||
ignoreString = ignoreString; | |||||
project.log("The ignore attribute is deprecated. "+ | |||||
"Please use the excludes attribute.", | |||||
Project.MSG_WARN); | |||||
if (ignoreString != null && ignoreString.length() > 0) { | if (ignoreString != null && ignoreString.length() > 0) { | ||||
StringTokenizer tok = | |||||
new StringTokenizer(ignoreString, ", ", false); | |||||
Vector tmpExcludes = new Vector(); | |||||
StringTokenizer tok = new StringTokenizer(ignoreString, ", ", false); | |||||
while (tok.hasMoreTokens()) { | while (tok.hasMoreTokens()) { | ||||
ignoreList.addElement ( tok.nextToken().trim() ); | |||||
tmpExcludes.addElement("**/"+tok.nextToken().trim()+"/**"); | |||||
} | } | ||||
this.excludes = new String[tmpExcludes.size()]; | |||||
for (int i = 0; i < tmpExcludes.size(); i++) { | |||||
this.excludes[i] = (String)tmpExcludes.elementAt(i); | |||||
} | |||||
} else { | |||||
this.excludes = null; | |||||
} | } | ||||
} | } | ||||
private void scanDir(File from, File to) { | |||||
String[] list = from.list(new DesirableFilter()); | |||||
if (list == null) { | |||||
project.log("Source directory " + srcDir.getAbsolutePath() | |||||
+ " does not exist.", "copydir", Project.MSG_WARN); | |||||
return; | |||||
} | |||||
for (int i = 0; i < list.length; i++) { | |||||
String filename = list[i]; | |||||
private void scanDir(File from, File to, String[] files) { | |||||
for (int i = 0; i < files.length; i++) { | |||||
String filename = files[i]; | |||||
File srcFile = new File(from, filename); | File srcFile = new File(from, filename); | ||||
File destFile = new File(to, filename); | File destFile = new File(to, filename); | ||||
if ( ! ignoreList.contains(filename) ) { | |||||
if (srcFile.isDirectory()) { | |||||
scanDir(srcFile, destFile); | |||||
} else { | |||||
if (srcFile.lastModified() > destFile.lastModified()) { | |||||
filecopyList.put(srcFile.getAbsolutePath(), | |||||
if (srcFile.lastModified() > destFile.lastModified()) { | |||||
filecopyList.put(srcFile.getAbsolutePath(), | |||||
destFile.getAbsolutePath()); | destFile.getAbsolutePath()); | ||||
} | |||||
} | |||||
} else { | |||||
project.log("Copydir Ignored: " + filename, Project.MSG_VERBOSE); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -87,7 +87,7 @@ public class Jar extends Zip { | |||||
if (manifest != null) { | if (manifest != null) { | ||||
ZipEntry ze = new ZipEntry("META-INF/"); | ZipEntry ze = new ZipEntry("META-INF/"); | ||||
zOut.putNextEntry(ze); | zOut.putNextEntry(ze); | ||||
zipFile(manifest, zOut, "META-INF/MANIFEST.MF"); | |||||
super.zipFile(manifest, zOut, "META-INF/MANIFEST.MF"); | |||||
} else { | } else { | ||||
ZipEntry ze = new ZipEntry("META-INF/"); | ZipEntry ze = new ZipEntry("META-INF/"); | ||||
zOut.putNextEntry(ze); | zOut.putNextEntry(ze); | ||||
@@ -100,14 +100,22 @@ public class Jar extends Zip { | |||||
} | } | ||||
protected void zipDir(File dir, ZipOutputStream zOut, String vPath) | protected void zipDir(File dir, ZipOutputStream zOut, String vPath) | ||||
throws IOException | |||||
throws IOException | |||||
{ | { | ||||
// First add directory to zip entry | |||||
if( ! "META-INF/".equals(vPath) ) { | |||||
// we already added a META-INF | |||||
ZipEntry ze = new ZipEntry(vPath); | |||||
zOut.putNextEntry(ze); | |||||
// First add directory to zip entry | |||||
if(!vPath.equals("META-INF/")) { | |||||
// we already added a META-INF | |||||
ZipEntry ze = new ZipEntry(vPath); | |||||
zOut.putNextEntry(ze); | |||||
} | |||||
} | |||||
protected void zipFile(File file, ZipOutputStream zOut, String vPath) | |||||
throws IOException | |||||
{ | |||||
// We already added a META-INF/MANIFEST.MF | |||||
if (!vPath.equals("META-INF/MANIFEST.MF")) { | |||||
super.zipFile(file, zOut, vPath); | |||||
} | } | ||||
super.zipDir(dir, zOut, vPath); | |||||
} | } | ||||
} | } |
@@ -98,6 +98,9 @@ public class Javac extends Task { | |||||
private String target; | private String target; | ||||
private String bootclasspath; | private String bootclasspath; | ||||
private String extdirs; | private String extdirs; | ||||
private String[] includes; | |||||
private String[] excludes; | |||||
private boolean useDefaultExcludes = true; | |||||
private Vector compileList = new Vector(); | private Vector compileList = new Vector(); | ||||
private Hashtable filecopyList = new Hashtable(); | private Hashtable filecopyList = new Hashtable(); | ||||
@@ -193,22 +196,91 @@ public class Javac extends Task { | |||||
} | } | ||||
/** | /** | ||||
* Executes the task. | |||||
* Sets the set of include patterns. Patterns may be separated by a comma | |||||
* or a space. | |||||
* | |||||
* @param includes the string containing the include patterns | |||||
*/ | */ | ||||
public void setIncludes(String includes) { | |||||
if (includes != null && includes.length() > 0) { | |||||
Vector tmpIncludes = new Vector(); | |||||
StringTokenizer tok = new StringTokenizer(includes, ", ", false); | |||||
while (tok.hasMoreTokens()) { | |||||
tmpIncludes.addElement(tok.nextToken().trim()); | |||||
} | |||||
this.includes = new String[tmpIncludes.size()]; | |||||
for (int i = 0; i < tmpIncludes.size(); i++) { | |||||
this.includes[i] = (String)tmpIncludes.elementAt(i); | |||||
} | |||||
} else { | |||||
this.includes = null; | |||||
} | |||||
} | |||||
public void execute() throws BuildException { | |||||
/** | |||||
* Sets the set of exclude patterns. Patterns may be separated by a comma | |||||
* or a space. | |||||
* | |||||
* @param excludes the string containing the exclude patterns | |||||
*/ | |||||
public void setExcludes(String excludes) { | |||||
if (excludes != null && excludes.length() > 0) { | |||||
Vector tmpExcludes = new Vector(); | |||||
StringTokenizer tok = new StringTokenizer(excludes, ", ", false); | |||||
while (tok.hasMoreTokens()) { | |||||
tmpExcludes.addElement(tok.nextToken().trim()); | |||||
} | |||||
this.excludes = new String[tmpExcludes.size()]; | |||||
for (int i = 0; i < tmpExcludes.size(); i++) { | |||||
this.excludes[i] = (String)tmpExcludes.elementAt(i); | |||||
} | |||||
} else { | |||||
this.excludes = null; | |||||
} | |||||
} | |||||
/** | |||||
* Sets whether default exclusions should be used or not. | |||||
* | |||||
* @param useDefaultExcludes "true" or "on" when default exclusions should | |||||
* be used, "false" or "off" when they | |||||
* shouldn't be used. | |||||
*/ | |||||
public void setDefaultexcludes(String useDefaultExcludes) { | |||||
this.useDefaultExcludes = Project.toBoolean(useDefaultExcludes); | |||||
} | |||||
/** | |||||
* Executes the task. | |||||
*/ | |||||
public void execute() throws BuildException { | |||||
// first off, make sure that we've got a srcdir and destdir | // first off, make sure that we've got a srcdir and destdir | ||||
if (srcDir == null || destDir == null ) { | |||||
String msg = "srcDir and destDir attributes must be set!"; | |||||
throw new BuildException(msg); | |||||
if (srcDir == null) { | |||||
throw new BuildException("srcdir attribute must be set!"); | |||||
} | |||||
if (!srcDir.exists()) { | |||||
throw new BuildException("srcdir does not exist!"); | |||||
} | |||||
if (destDir == null) { | |||||
throw new BuildException("destdir attribute must be set!"); | |||||
} | } | ||||
// scan source and dest dirs to build up both copy lists and | // scan source and dest dirs to build up both copy lists and | ||||
// compile lists | // compile lists | ||||
scanDir(srcDir, destDir); | |||||
DirectoryScanner ds = new DirectoryScanner(); | |||||
ds.setBasedir(srcDir); | |||||
ds.setIncludes(includes); | |||||
ds.setExcludes(excludes); | |||||
if (useDefaultExcludes) { | |||||
ds.addDefaultExcludes(); | |||||
} | |||||
ds.scan(); | |||||
String[] files = ds.getIncludedFiles(); | |||||
scanDir(srcDir, destDir, files); | |||||
// compile the source files | // compile the source files | ||||
@@ -262,33 +334,21 @@ public class Javac extends Task { | |||||
* support files to be copied. | * support files to be copied. | ||||
*/ | */ | ||||
private void scanDir(File srcDir, File destDir) { | |||||
String[] list = srcDir.list(new DesirableFilter()); | |||||
int len = (list==null ? 0 : list.length); | |||||
for (int i = 0; i < len; i++) { | |||||
String filename = list[i]; | |||||
File srcFile = new File(srcDir, filename); | |||||
File destFile = new File(destDir, filename); | |||||
if (srcFile.isDirectory()) { | |||||
// it's a dir, scan that recursively | |||||
scanDir(srcFile, destFile); | |||||
} else { | |||||
// it's a file, see if we compile it or just copy it | |||||
if (filename.endsWith(".java")) { | |||||
File classFile = | |||||
new File(destDir, | |||||
filename.substring(0, | |||||
filename.indexOf(".java")) | |||||
private void scanDir(File srcDir, File destDir, String files[]) { | |||||
for (int i = 0; i < files.length; i++) { | |||||
File srcFile = new File(srcDir, files[i]); | |||||
if (files[i].endsWith(".java")) { | |||||
File classFile = new File(destDir, files[i].substring(0, | |||||
files[i].indexOf(".java")) | |||||
+ ".class"); | + ".class"); | ||||
if (srcFile.lastModified() > classFile.lastModified()) { | if (srcFile.lastModified() > classFile.lastModified()) { | ||||
compileList.addElement(srcFile.getAbsolutePath()); | compileList.addElement(srcFile.getAbsolutePath()); | ||||
} | } | ||||
} else { | } else { | ||||
File destFile = new File(destDir, files[i]); | |||||
if (srcFile.lastModified() > destFile.lastModified()) { | if (srcFile.lastModified() > destFile.lastModified()) { | ||||
filecopyList.put(srcFile.getAbsolutePath(), | filecopyList.put(srcFile.getAbsolutePath(), | ||||
destFile.getAbsolutePath()); | destFile.getAbsolutePath()); | ||||
} | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -74,10 +74,10 @@ public class Zip extends Task { | |||||
private File zipFile; | private File zipFile; | ||||
private File baseDir; | private File baseDir; | ||||
private Vector items = new Vector(); | |||||
private String[] includes; | |||||
private String[] excludes; | |||||
private boolean useDefaultExcludes = true; | |||||
private File manifest; | private File manifest; | ||||
private Vector ignoreList = new Vector(); | |||||
private boolean allItems = false; | |||||
protected String archiveType = "zip"; | protected String archiveType = "zip"; | ||||
/** | /** | ||||
@@ -107,15 +107,28 @@ public class Zip extends Task { | |||||
ignore lists are easier than include lists. ;-) | ignore lists are easier than include lists. ;-) | ||||
*/ | */ | ||||
public void setItems(String itemString) { | public void setItems(String itemString) { | ||||
if ( itemString.equals("*") ) { | |||||
allItems = true; | |||||
project.log("The items attribute is deprecated. "+ | |||||
"Please use the includes attribute.", | |||||
Project.MSG_WARN); | |||||
if (itemString == null || itemString.equals("*")) { | |||||
includes = new String[1]; | |||||
includes[0] = "**"; | |||||
} else { | } else { | ||||
StringTokenizer tok = new StringTokenizer(itemString, ",", false); | |||||
Vector tmpIncludes = new Vector(); | |||||
StringTokenizer tok = new StringTokenizer(itemString, ", "); | |||||
while (tok.hasMoreTokens()) { | while (tok.hasMoreTokens()) { | ||||
items.addElement(tok.nextToken().trim()); | |||||
String pattern = tok.nextToken().trim(); | |||||
if (pattern.length() > 0) { | |||||
tmpIncludes.addElement(pattern+"/**"); | |||||
} | |||||
} | |||||
this.includes = new String[tmpIncludes.size()]; | |||||
for (int i = 0; i < tmpIncludes.size(); i++) { | |||||
this.includes[i] = (String)tmpIncludes.elementAt(i); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/** | /** | ||||
List of filenames and directory names to not | List of filenames and directory names to not | ||||
include in the final .jar file. They should be either | include in the final .jar file. They should be either | ||||
@@ -130,49 +143,127 @@ public class Zip extends Task { | |||||
@author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a> | @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a> | ||||
*/ | */ | ||||
public void setIgnore(String ignoreString) { | public void setIgnore(String ignoreString) { | ||||
ignoreString = ignoreString; | |||||
if (ignoreString != null && ignoreString.length() > 0) { | |||||
StringTokenizer tok = | |||||
new StringTokenizer(ignoreString, ", ", false); | |||||
project.log("The ignore attribute is deprecated. "+ | |||||
"Please use the excludes attribute.", | |||||
Project.MSG_WARN); | |||||
if (ignoreString == null) { | |||||
this.excludes = null; | |||||
} else { | |||||
Vector tmpExcludes = new Vector(); | |||||
StringTokenizer tok = new StringTokenizer(ignoreString, ", "); | |||||
while (tok.hasMoreTokens()) { | while (tok.hasMoreTokens()) { | ||||
ignoreList.addElement ( tok.nextToken().trim() ); | |||||
String pattern = tok.nextToken().trim(); | |||||
if (pattern.length() > 0) { | |||||
tmpExcludes.addElement("**/"+pattern+"/**"); | |||||
} | |||||
} | |||||
this.excludes = new String[tmpExcludes.size()]; | |||||
for (int i = 0; i < tmpExcludes.size(); i++) { | |||||
this.excludes[i] = (String)tmpExcludes.elementAt(i); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/** | |||||
* Sets the set of include patterns. Patterns may be separated by a comma | |||||
* or a space. | |||||
* | |||||
* @param includes the string containing the include patterns | |||||
*/ | |||||
public void setIncludes(String includes) { | |||||
if (includes == null) { | |||||
this.includes = null; | |||||
} else { | |||||
Vector tmpIncludes = new Vector(); | |||||
StringTokenizer tok = new StringTokenizer(includes, ", "); | |||||
while (tok.hasMoreTokens()) { | |||||
String pattern = tok.nextToken().trim(); | |||||
if (pattern.length() > 0) { | |||||
tmpIncludes.addElement(pattern); | |||||
} | |||||
} | |||||
this.includes = new String[tmpIncludes.size()]; | |||||
for (int i = 0; i < tmpIncludes.size(); i++) { | |||||
this.includes[i] = (String)tmpIncludes.elementAt(i); | |||||
} | |||||
} | |||||
} | |||||
/** | |||||
* Sets the set of exclude patterns. Patterns may be separated by a comma | |||||
* or a space. | |||||
* | |||||
* @param excludes the string containing the exclude patterns | |||||
*/ | |||||
public void setExcludes(String excludes) { | |||||
if (excludes == null) { | |||||
this.excludes = null; | |||||
} else { | |||||
Vector tmpExcludes = new Vector(); | |||||
StringTokenizer tok = new StringTokenizer(excludes, ", ", false); | |||||
while (tok.hasMoreTokens()) { | |||||
String pattern = tok.nextToken().trim(); | |||||
if (pattern.length() > 0) { | |||||
tmpExcludes.addElement(pattern); | |||||
} | |||||
} | |||||
this.excludes = new String[tmpExcludes.size()]; | |||||
for (int i = 0; i < tmpExcludes.size(); i++) { | |||||
this.excludes[i] = (String)tmpExcludes.elementAt(i); | |||||
} | |||||
} | |||||
} | |||||
/** | |||||
* Sets whether default exclusions should be used or not. | |||||
* | |||||
* @param useDefaultExcludes "true" or "on" when default exclusions should | |||||
* be used, "false" or "off" when they | |||||
* shouldn't be used. | |||||
*/ | |||||
public void setDefaultexcludes(String useDefaultExcludes) { | |||||
this.useDefaultExcludes = Project.toBoolean(useDefaultExcludes); | |||||
} | |||||
public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
project.log("Building " + archiveType + ": " + zipFile.getAbsolutePath()); | |||||
project.log("Building "+ archiveType +": "+ zipFile.getAbsolutePath()); | |||||
if (baseDir == null) { | |||||
throw new BuildException("basedir attribute must be set!"); | |||||
} | |||||
if (!baseDir.exists()) { | |||||
throw new BuildException("basedir does not exist!"); | |||||
} | |||||
DirectoryScanner ds = new DirectoryScanner(); | |||||
ds.setBasedir(baseDir); | |||||
ds.setIncludes(includes); | |||||
ds.setExcludes(excludes); | |||||
if (useDefaultExcludes) { | |||||
ds.addDefaultExcludes(); | |||||
} | |||||
ds.scan(); | |||||
String[] files = ds.getIncludedFiles(); | |||||
String[] dirs = ds.getIncludedDirectories(); | |||||
try { | try { | ||||
ZipOutputStream zOut = new ZipOutputStream(new FileOutputStream(zipFile)); | ZipOutputStream zOut = new ZipOutputStream(new FileOutputStream(zipFile)); | ||||
initZipOutputStream(zOut); | |||||
if ( allItems ) { | |||||
String[] lst = baseDir.list(); | |||||
for (int i=0;i<lst.length;i++) { | |||||
items.addElement(lst[i]); | |||||
} | |||||
initZipOutputStream(zOut); | |||||
for (int i = 0; i < dirs.length; i++) { | |||||
File f = new File(baseDir,dirs[i]); | |||||
String name = dirs[i].replace(File.separatorChar,'/')+"/"; | |||||
zipDir(f, zOut, name); | |||||
} | } | ||||
// add items | |||||
Enumeration e = items.elements(); | |||||
while (e.hasMoreElements()) { | |||||
String s = (String)e.nextElement(); | |||||
// check to make sure item is not in ignore list | |||||
// shouldn't be ignored here, but just want to make sure | |||||
if (! ignoreList.contains(s)) { | |||||
File f = new File(baseDir, s); | |||||
if (f.isDirectory()) { | |||||
zipDir(f, zOut, s + "/"); | |||||
} else { | |||||
zipFile(f, zOut, s); | |||||
} | |||||
} else { | |||||
project.log("Ignoring: " + s, Project.MSG_WARN); | |||||
} | |||||
for (int i = 0; i < files.length; i++) { | |||||
File f = new File(baseDir,files[i]); | |||||
String name = files[i].replace(File.separatorChar,'/'); | |||||
zipFile(f, zOut, name); | |||||
} | } | ||||
// close up | |||||
// close up | |||||
zOut.close(); | zOut.close(); | ||||
} catch (IOException ioe) { | } catch (IOException ioe) { | ||||
String msg = "Problem creating " + archiveType + " " + ioe.getMessage(); | String msg = "Problem creating " + archiveType + " " + ioe.getMessage(); | ||||
@@ -181,29 +272,14 @@ public class Zip extends Task { | |||||
} | } | ||||
protected void initZipOutputStream(ZipOutputStream zOut) | protected void initZipOutputStream(ZipOutputStream zOut) | ||||
throws IOException, BuildException | |||||
throws IOException, BuildException | |||||
{ | { | ||||
zOut.setMethod(ZipOutputStream.DEFLATED); | |||||
zOut.setMethod(ZipOutputStream.DEFLATED); | |||||
} | } | ||||
protected void zipDir(File dir, ZipOutputStream zOut, String vPath) | protected void zipDir(File dir, ZipOutputStream zOut, String vPath) | ||||
throws IOException | throws IOException | ||||
{ | { | ||||
String[] list = dir.list(); | |||||
for (int i = 0; i < list.length; i++) { | |||||
String f = list[i]; | |||||
// check to make sure item is not in ignore list | |||||
if (! ignoreList.contains(f)) { | |||||
File file = new File(dir, f); | |||||
if (file.isDirectory()) { | |||||
zipDir(file, zOut, vPath + f + "/"); | |||||
} else { | |||||
zipFile(file, zOut, vPath + f); | |||||
} | |||||
} else { | |||||
project.log("Ignoring: " + f, Project.MSG_WARN); | |||||
} | |||||
} | |||||
} | } | ||||
protected void zipFile(InputStream in, ZipOutputStream zOut, String vPath) | protected void zipFile(InputStream in, ZipOutputStream zOut, String vPath) | ||||
@@ -211,7 +287,7 @@ public class Zip extends Task { | |||||
{ | { | ||||
ZipEntry ze = new ZipEntry(vPath); | ZipEntry ze = new ZipEntry(vPath); | ||||
zOut.putNextEntry(ze); | zOut.putNextEntry(ze); | ||||
byte[] buffer = new byte[8 * 1024]; | byte[] buffer = new byte[8 * 1024]; | ||||
int count = 0; | int count = 0; | ||||
do { | do { | ||||
@@ -219,7 +295,7 @@ public class Zip extends Task { | |||||
count = in.read(buffer, 0, buffer.length); | count = in.read(buffer, 0, buffer.length); | ||||
} while (count != -1); | } while (count != -1); | ||||
} | } | ||||
protected void zipFile(File file, ZipOutputStream zOut, String vPath) | protected void zipFile(File file, ZipOutputStream zOut, String vPath) | ||||
throws IOException | throws IOException | ||||
{ | { | ||||