Author: bodewig
Date: Wed Aug 26 11:03:10 2009
New Revision: 807960

URL: http://svn.apache.org/viewvc?rev=807960&view=rev
Log:
create parent directory of archive in <zip> and <tar> if needed.  PR 45377.  
Based on patch by Remie Bolte

Modified:
    ant/core/trunk/CONTRIBUTORS
    ant/core/trunk/WHATSNEW
    ant/core/trunk/contributors.xml
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Tar.java
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Zip.java

Modified: ant/core/trunk/CONTRIBUTORS
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/CONTRIBUTORS?rev=807960&r1=807959&r2=807960&view=diff
==============================================================================
Binary files - no diff available.

Modified: ant/core/trunk/WHATSNEW
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=807960&r1=807959&r2=807960&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Wed Aug 26 11:03:10 2009
@@ -919,6 +919,10 @@
    HTTP connections at the HttpUrlConnection level.
    Bugzilla Report 41891.
 
+ * <tar> and <zip> (and tasks derived from <zip>) will now create the
+   parent directory of the destination archive if it doesn't exist.
+   Bugzilla Report 45377.
+
 Changes from Ant 1.7.0 TO Ant 1.7.1
 =============================================
 

Modified: ant/core/trunk/contributors.xml
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/contributors.xml?rev=807960&r1=807959&r2=807960&view=diff
==============================================================================
--- ant/core/trunk/contributors.xml (original)
+++ ant/core/trunk/contributors.xml Wed Aug 26 11:03:10 2009
@@ -1031,6 +1031,10 @@
     <last>Waldin</last>
   </name>
   <name>
+    <first>Remie</first>
+    <last>Bolte</last>
+  </name>
+  <name>
     <first>Richard</first>
     <last>Evans</last>
   </name>

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Tar.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Tar.java?rev=807960&r1=807959&r2=807960&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Tar.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Tar.java Wed Aug 26 
11:03:10 2009
@@ -279,6 +279,12 @@
                 return;
             }
 
+            File parent = tarFile.getParentFile();
+            if (parent != null && !parent.isDirectory() && !parent.mkdirs()) {
+                throw new BuildException("Failed to create missing parent"
+                                         + " directory for " + tarFile);
+            }
+
             log("Building tar: " + tarFile.getAbsolutePath(), 
Project.MSG_INFO);
 
             TarOutputStream tOut = null;

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Zip.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Zip.java?rev=807960&r1=807959&r2=807960&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Zip.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Zip.java Wed Aug 26 
11:03:10 2009
@@ -618,6 +618,13 @@
             if (!state.isOutOfDate()) {
                 return;
             }
+
+            File parent = zipFile.getParentFile();
+            if (parent != null && !parent.isDirectory() && !parent.mkdirs()) {
+                throw new BuildException("Failed to create missing parent"
+                                         + " directory for " + zipFile);
+            }
+
             updatedFile = true;
             if (!zipFile.exists() && state.isWithoutAnyResources()) {
                 createEmptyZip(zipFile);


Reply via email to