that come from existing archives. PR: 16084 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@275025 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -557,6 +557,10 @@ If set to true, the process will be spawned. Bugzilla Report 5907. | |||||
| * <if/> and <unless/> attributes added to <param/> element of <style> | * <if/> and <unless/> attributes added to <param/> element of <style> | ||||
| Bugzilla Report 22044 | Bugzilla Report 22044 | ||||
| * <zip> and friends have a new attribute "keepcompression" that can be | |||||
| used to incrementally build an archive mixing compressed and uncompressed | |||||
| entries. | |||||
| Changes from Ant 1.5.2 to Ant 1.5.3 | Changes from Ant 1.5.2 to Ant 1.5.3 | ||||
| =================================== | =================================== | ||||
| @@ -40,7 +40,19 @@ attributes of zipfilesets in a Zip or Jar task.)</p> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td valign="top">compress</td> | <td valign="top">compress</td> | ||||
| <td valign="top">Not only store data but also compress them, defaults to true</td> | |||||
| <td valign="top">Not only store data but also compress them, | |||||
| defaults to true. Unless you set the <em>keepcompression</em> | |||||
| attribute to false, this will apply to the entire archive, not | |||||
| only the files you've added while updating.</td> | |||||
| <td align="center" valign="top">No</td> | |||||
| </tr> | |||||
| <tr> | |||||
| <td valign="top">keepcompression</td> | |||||
| <td valign="top">For entries coming from existing archives (like | |||||
| nested <em>zipfileset</em>s or while updating the archive), keep | |||||
| the compression as it has been originally instead of using the | |||||
| <em>compress</em> attribute. Defaults false. <em>Since Ant | |||||
| 1.6</em></td> | |||||
| <td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| @@ -73,7 +73,19 @@ being wrapped and continued on the next line. | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td valign="top">compress</td> | <td valign="top">compress</td> | ||||
| <td valign="top">Not only store data but also compress them, defaults to true</td> | |||||
| <td valign="top">Not only store data but also compress them, | |||||
| defaults to true. Unless you set the <em>keepcompression</em> | |||||
| attribute to false, this will apply to the entire archive, not | |||||
| only the files you've added while updating.</td> | |||||
| <td align="center" valign="top">No</td> | |||||
| </tr> | |||||
| <tr> | |||||
| <td valign="top">keepcompression</td> | |||||
| <td valign="top">For entries coming from existing archives (like | |||||
| nested <em>zipfileset</em>s or while updating the archive), keep | |||||
| the compression as it has been originally instead of using the | |||||
| <em>compress</em> attribute. Defaults false. <em>Since Ant | |||||
| 1.6</em></td> | |||||
| <td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| @@ -47,7 +47,19 @@ attributes of zipfilesets in a Zip or Jar task.)</p> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td valign="top">compress</td> | <td valign="top">compress</td> | ||||
| <td valign="top">Not only store data but also compress them, defaults to true</td> | |||||
| <td valign="top">Not only store data but also compress them, | |||||
| defaults to true. Unless you set the <em>keepcompression</em> | |||||
| attribute to false, this will apply to the entire archive, not | |||||
| only the files you've added while updating.</td> | |||||
| <td align="center" valign="top">No</td> | |||||
| </tr> | |||||
| <tr> | |||||
| <td valign="top">keepcompression</td> | |||||
| <td valign="top">For entries coming from existing archives (like | |||||
| nested <em>zipfileset</em>s or while updating the archive), keep | |||||
| the compression as it has been originally instead of using the | |||||
| <em>compress</em> attribute. Defaults false. <em>Since Ant | |||||
| 1.6</em></td> | |||||
| <td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| @@ -89,7 +89,19 @@ versions of zip and unzip for many Unix and Unix-like systems.</p> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td valign="top">compress</td> | <td valign="top">compress</td> | ||||
| <td valign="top">Not only store data but also compress them, defaults to true</td> | |||||
| <td valign="top">Not only store data but also compress them, | |||||
| defaults to true. Unless you set the <em>keepcompression</em> | |||||
| attribute to false, this will apply to the entire archive, not | |||||
| only the files you've added while updating.</td> | |||||
| <td align="center" valign="top">No</td> | |||||
| </tr> | |||||
| <tr> | |||||
| <td valign="top">keepcompression</td> | |||||
| <td valign="top">For entries coming from existing archives (like | |||||
| nested <em>zipfileset</em>s or while updating the archive), keep | |||||
| the compression as it has been originally instead of using the | |||||
| <em>compress</em> attribute. Defaults false. <em>Since Ant | |||||
| 1.6</em></td> | |||||
| <td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| @@ -140,6 +140,14 @@ public class Zip extends MatchingTask { | |||||
| */ | */ | ||||
| private String encoding; | private String encoding; | ||||
| /** | |||||
| * Whether the original compression of entries coming from a ZIP | |||||
| * archive should be kept (for example when updating an archive). | |||||
| * | |||||
| * @since Ant 1.6 | |||||
| */ | |||||
| private boolean keepCompression = false; | |||||
| /** | /** | ||||
| * This is the name/location of where to | * This is the name/location of where to | ||||
| * create the .zip file. | * create the .zip file. | ||||
| @@ -307,6 +315,16 @@ public class Zip extends MatchingTask { | |||||
| return encoding; | return encoding; | ||||
| } | } | ||||
| /** | |||||
| * Whether the original compression of entries coming from a ZIP | |||||
| * archive should be kept (for example when updating an archive). | |||||
| * | |||||
| * @since Ant 1.6 | |||||
| */ | |||||
| public void setKeepCompression(boolean keep) { | |||||
| keepCompression = keep; | |||||
| } | |||||
| /** | /** | ||||
| * validate and build | * validate and build | ||||
| */ | */ | ||||
| @@ -631,11 +649,20 @@ public class Zip extends MatchingTask { | |||||
| zipFile(f, zOut, prefix + name, fileMode); | zipFile(f, zOut, prefix + name, fileMode); | ||||
| } else if (!resources[i].isDirectory()) { | } else if (!resources[i].isDirectory()) { | ||||
| ZipEntry ze = zf.getEntry(resources[i].getName()); | ZipEntry ze = zf.getEntry(resources[i].getName()); | ||||
| if (ze != null) { | if (ze != null) { | ||||
| zipFile(zf.getInputStream(ze), zOut, prefix + name, | |||||
| ze.getTime(), zfs.getSrc(getProject()), | |||||
| zfs.hasFileModeBeenSet() ? fileMode | |||||
| : ze.getUnixMode()); | |||||
| boolean oldCompress = doCompress; | |||||
| if (keepCompression) { | |||||
| doCompress = (ze.getMethod() == ZipEntry.DEFLATED); | |||||
| } | |||||
| try { | |||||
| zipFile(zf.getInputStream(ze), zOut, prefix + name, | |||||
| ze.getTime(), zfs.getSrc(getProject()), | |||||
| zfs.hasFileModeBeenSet() ? fileMode | |||||
| : ze.getUnixMode()); | |||||
| } finally { | |||||
| doCompress = oldCompress; | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -973,6 +1000,7 @@ public class Zip extends MatchingTask { | |||||
| if (!skipWriting) { | if (!skipWriting) { | ||||
| ZipEntry ze = new ZipEntry(vPath); | ZipEntry ze = new ZipEntry(vPath); | ||||
| ze.setTime(lastModified); | ze.setTime(lastModified); | ||||
| ze.setMethod(doCompress ? ZipEntry.DEFLATED : ZipEntry.STORED); | |||||
| /* | /* | ||||
| * ZipOutputStream.putNextEntry expects the ZipEntry to | * ZipOutputStream.putNextEntry expects the ZipEntry to | ||||