diff --git a/changes.xml b/changes.xml
index 8d14d51..56731ac 100644
--- a/changes.xml
+++ b/changes.xml
@@ -57,7 +57,9 @@
         added.
       </action>
       <action type="add">
-        Read-only support for file based 7z archives has been added.
+        Support for file based 7z archives has been added - most
+        compression algorithms used in 7z archives can be read but
+        only uncompressed archives can be written.
       </action>
     </release>
 
diff --git a/docs/archive.html b/docs/archive.html
index 0fe67de..e14e69c 100644
--- a/docs/archive.html
+++ b/docs/archive.html
@@ -273,6 +273,14 @@
     </tr>
   </table>
 
+  <h3><a name="sevenz">SevenZ</a></h3>
+
+  <p><em>Since Compress Antlib 1.3</em></p>
+
+  <p>An <a href="#archive">archiving task</a> creating archives of the
+    7z format.  As of Commons Compress 1.6 this task only supports
+    writing uncompressed archives.</p>
+
   <h3><a name="tar">Tar</a></h3>
 
   <p>An <a href="#archive">archiving task</a> creating archives of the
diff --git a/docs/index.html b/docs/index.html
index d5a7612..2cf3f0c 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -53,6 +53,7 @@
       <li><a href="pack.html#gzip">gzip</a></li>
       <li><a href="pack.html#pack200">pack200</a></li>
       <li><a href="pack200normalize.html">pack200normalize</a></li>
+      <li><a href="archive.html#sevenz">sevenz</a></li>
       <li><a href="archive.html#tar">tar</a></li>
       <li><a href="expand.html#un7z">un7z</a></li>
       <li><a href="expand.html#unar">unar</a></li>
diff --git a/src/main/org/apache/ant/compress/antlib.xml b/src/main/org/apache/ant/compress/antlib.xml
index 90e20c4..ff3f14f 100644
--- a/src/main/org/apache/ant/compress/antlib.xml
+++ b/src/main/org/apache/ant/compress/antlib.xml
@@ -97,6 +97,10 @@
      classname="org.apache.ant.compress.taskdefs.Pack200Normalize"
      />
   <taskdef
+     name="sevenz"
+     classname="org.apache.ant.compress.taskdefs.SevenZ"
+     />
+  <taskdef
      name="xz"
      classname="org.apache.ant.compress.taskdefs.XZ"
      />
diff --git a/src/main/org/apache/ant/compress/resources/SevenZResource.java b/src/main/org/apache/ant/compress/resources/SevenZResource.java
index c5b6f08..9bd1bdd 100644
--- a/src/main/org/apache/ant/compress/resources/SevenZResource.java
+++ b/src/main/org/apache/ant/compress/resources/SevenZResource.java
@@ -162,6 +162,7 @@
                 }
                 ze = z.getNextEntry();
             }
+            setEntry(null);
         } catch (IOException e) {
             log(e.getMessage(), Project.MSG_DEBUG);
             throw new BuildException(e);
diff --git a/src/main/org/apache/ant/compress/taskdefs/SevenZ.java b/src/main/org/apache/ant/compress/taskdefs/SevenZ.java
new file mode 100644
index 0000000..1324b72
--- /dev/null
+++ b/src/main/org/apache/ant/compress/taskdefs/SevenZ.java
@@ -0,0 +1,58 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.ant.compress.taskdefs;
+
+import java.util.Date;
+
+import org.apache.ant.compress.resources.SevenZFileSet;
+import org.apache.ant.compress.util.SevenZStreamFactory;
+import org.apache.commons.compress.archivers.ArchiveEntry;
+import org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry;
+import org.apache.tools.ant.types.ArchiveFileSet;
+import org.apache.tools.ant.types.Resource;
+
+/**
+ * Creates 7z archives.
+ */
+public class SevenZ extends ArchiveBase {
+
+    public SevenZ() {
+        setFactory(new SevenZStreamFactory());
+        setEntryBuilder(
+              new ArchiveBase.EntryBuilder() {
+                public ArchiveEntry buildEntry(ArchiveBase.ResourceWithFlags r) {
+                    SevenZArchiveEntry entry = new SevenZArchiveEntry();
+                    entry.setName(r.getName());
+                    entry.setDirectory(r.getResource().isDirectory());
+                    entry.setLastModifiedDate(new Date(r.getResource()
+                                                       .getLastModified()));
+                    entry.setSize(r.getResource().getSize());
+                    return entry;
+                }
+            });
+        setFileSetBuilder(new ArchiveBase.FileSetBuilder() {
+                public ArchiveFileSet buildFileSet(Resource dest) {
+                    ArchiveFileSet afs = new SevenZFileSet();
+                    afs.setSrcResource(dest);
+                    return afs;
+                }
+            });
+    }
+
+}
diff --git a/src/main/org/apache/ant/compress/util/SevenZStreamFactory.java b/src/main/org/apache/ant/compress/util/SevenZStreamFactory.java
index 33af609..327f92c 100644
--- a/src/main/org/apache/ant/compress/util/SevenZStreamFactory.java
+++ b/src/main/org/apache/ant/compress/util/SevenZStreamFactory.java
@@ -26,6 +26,7 @@
 import org.apache.commons.compress.archivers.ArchiveEntry;
 import org.apache.commons.compress.archivers.ArchiveInputStream;
 import org.apache.commons.compress.archivers.ArchiveOutputStream;
+import org.apache.commons.compress.archivers.sevenz.SevenZOutputFile;
 import org.apache.commons.compress.archivers.sevenz.SevenZFile;
 
 /**
@@ -70,7 +71,7 @@
     public ArchiveOutputStream getArchiveOutputStream(File file,
                                                       String encoding)
         throws IOException {
-        throw new UnsupportedOperationException();
+        return new SevenZArchiveOutputStream(file);
     }
 
     /**
@@ -98,4 +99,43 @@
         }
     }
 
+    /**
+     * Not really a stream but provides an ArchiveOutputStream
+     * compatible interface over SevenZOutputFile.
+     */
+    private static class SevenZArchiveOutputStream extends ArchiveOutputStream {
+
+        private final SevenZOutputFile zipFile;
+
+        public SevenZArchiveOutputStream(File file) throws IOException {
+            zipFile = new SevenZOutputFile(file);
+        }
+
+        public void close() {
+            zipFile.close();
+        }
+
+        public void putArchiveEntry(ArchiveEntry entry) throws IOException {
+            zipFile.putArchiveEntry(entry);
+        }
+
+        public void closeArchiveEntry() throws IOException {
+            zipFile.closeArchiveEntry();
+        }
+
+        public void finish() throws IOException {
+            zipFile.finish();
+        }
+
+        public ArchiveEntry createArchiveEntry(File inputFile, String entryName) 
+            throws IOException {
+            return zipFile.createArchiveEntry(inputFile, entryName);
+        }
+
+        public void write(byte[] b,int  off, int len) throws IOException {
+            zipFile.write(b, off, len);
+        }
+                
+    }
+
 }
diff --git a/src/tests/antunit/sevenz-test.xml b/src/tests/antunit/sevenz-test.xml
new file mode 100644
index 0000000..2195d49
--- /dev/null
+++ b/src/tests/antunit/sevenz-test.xml
@@ -0,0 +1,435 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<project default="antunit"
+         xmlns:au="antlib:org.apache.ant.antunit"
+         xmlns:cond="antlib:org.apache.tools.ant.types.conditions"
+         xmlns:cmp="antlib:org.apache.ant.compress">
+
+  <import file="antunit-base.xml" />
+
+  <target name="setUp">
+    <mkdir dir="${output}"/>
+    <mkdir dir="${input}/subdir"/>
+    <copy todir="${input}/subdir" file="../resources/asf-logo.gif"/>
+    <property name="dest" location="${output}/test.7z"/>
+    <macrodef name="checkProperties">
+      <attribute name="pattern" default="yyyy-MM-dd-HH:mm:ss Z"/>
+      <attribute name="dateTime"/>
+      <sequential>
+        <au:assertTrue>
+          <cond:islastmodified datetime="@{dateTime}"
+                               pattern="@{pattern}">
+            <cmp:sevenzentry name="asf-logo.gif">
+              <file file="${dest}"/>
+            </cmp:sevenzentry>
+          </cond:islastmodified>
+        </au:assertTrue>
+      </sequential>
+    </macrodef>
+  </target>
+
+  <target name="testPlainFileSet" depends="setUp">
+    <mkdir dir="${input}"/>
+    <copy todir="${input}" file="../resources/asf-logo.gif"/>
+    <touch datetime="2009-08-19-05:49:21 +0200"
+           pattern="yyyy-MM-dd-HH:mm:ss Z"
+           file="${input}/asf-logo.gif"/>
+    <cmp:sevenz destfile="${dest}">
+      <fileset dir="${input}" includes="asf-logo.gif"/>
+    </cmp:sevenz>
+    <checkProperties dateTime="2009-08-19-05:49:21 +0200"/>
+  </target>
+
+  <target name="testCoreZipFileSet" depends="setUp">
+    <cmp:sevenz destfile="${dest}">
+      <zipfileset src="../resources/asf-logo.gif.zip"
+                  includes="asf-logo.gif"/>
+    </cmp:sevenz>
+    <checkProperties dateTime="2001-11-19-15:34:20"
+                     pattern="yyyy-MM-dd-HH:mm:ss"
+                     />
+  </target>
+
+  <target name="testAntlibZipFileSet" depends="setUp">
+    <cmp:sevenz destfile="${dest}">
+      <cmp:zipfileset src="../resources/asf-logo.gif.zip"
+                      includes="asf-logo.gif"/>
+    </cmp:sevenz>
+    <checkProperties dateTime="2001-11-19-15:34:20"
+                     pattern="yyyy-MM-dd-HH:mm:ss"
+                     />
+  </target>
+
+  <target name="testSevenzFileSet" depends="setUp">
+    <cmp:sevenz destfile="${dest}">
+      <cmp:sevenzfileset src="../resources/asf-logo.gif.7z"
+                         includes="asf-logo.gif"/>
+    </cmp:sevenz>
+    <checkProperties dateTime="2013-09-27-20:54:32 +0200"/>
+  </target>
+
+  <target name="testNoDirectoriesByDefault" depends="setUp">
+    <cmp:sevenz destfile="${dest}">
+      <fileset dir="${input}"/>
+      <dirset dir="${input}"/>
+    </cmp:sevenz>
+    <assertResourceExists>
+      <cmp:sevenzentry name="subdir/asf-logo.gif">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceExists>
+    <assertResourceDoesntExist>
+      <cmp:sevenzentry name="subdir/">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceDoesntExist>
+  </target>
+
+  <target name="testWithDirectories" depends="setUp">
+    <cmp:sevenz destfile="${dest}" filesonly="false">
+      <dirset dir="${input}" excludes="."/>
+    </cmp:sevenz>
+    <assertResourceExists>
+      <cmp:sevenzentry name="subdir/">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceExists>
+  </target>
+
+  <target name="testWithImplicitDirectories" depends="setUp">
+    <cmp:sevenz destfile="${dest}" filesonly="false">
+      <fileset dir="${input}"/>
+    </cmp:sevenz>
+    <assertResourceExists>
+      <cmp:sevenzentry name="subdir/">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceExists>
+    <assertResourceExists>
+      <cmp:sevenzentry name="subdir/asf-logo.gif">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceExists>
+  </target>
+
+  <target name="testFullpath" depends="setUp">
+    <cmp:sevenz destfile="${dest}">
+      <cmp:arfileset src="../resources/asf-logo.gif.ar"
+                     fullpath="logo.gif"
+                     includes="asf-logo.gif"/>
+    </cmp:sevenz>
+    <assertResourceExists>
+      <cmp:sevenzentry name="logo.gif">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceExists>
+    <assertResourceDoesntExist>
+      <cmp:sevenzentry name="asf-logo.gif">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceDoesntExist>
+  </target>
+
+  <target name="testPrefixWithSlash" depends="setUp">
+    <cmp:sevenz destfile="${dest}">
+      <cmp:arfileset src="../resources/asf-logo.gif.ar"
+                     prefix="x/"
+                     includes="asf-logo.gif"/>
+    </cmp:sevenz>
+    <assertResourceExists>
+      <cmp:sevenzentry name="x/asf-logo.gif">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceExists>
+    <assertResourceDoesntExist>
+      <cmp:sevenzentry name="asf-logo.gif">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceDoesntExist>
+  </target>
+
+  <target name="testPrefixWithBackslash" depends="setUp">
+    <cmp:sevenz destfile="${dest}">
+      <cmp:arfileset src="../resources/asf-logo.gif.ar"
+                     prefix="x\"
+                     includes="asf-logo.gif"/>
+    </cmp:sevenz>
+    <assertResourceExists>
+      <cmp:sevenzentry name="x/asf-logo.gif">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceExists>
+    <assertResourceDoesntExist>
+      <cmp:sevenzentry name="asf-logo.gif">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceDoesntExist>
+  </target>
+
+  <target name="testPrefixWithoutSlash" depends="setUp">
+    <cmp:sevenz destfile="${dest}">
+      <cmp:arfileset src="../resources/asf-logo.gif.ar"
+                     prefix="x"
+                     includes="asf-logo.gif"/>
+    </cmp:sevenz>
+    <assertResourceExists>
+      <cmp:sevenzentry name="x/asf-logo.gif">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceExists>
+    <assertResourceDoesntExist>
+      <cmp:sevenzentry name="asf-logo.gif">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceDoesntExist>
+  </target>
+
+  <target name="testRemoveLeadingSlashes" depends="setUp">
+    <cmp:sevenz destfile="${dest}">
+      <cmp:arfileset src="../resources/asf-logo.gif.ar"
+                     fullpath="/logo.gif"
+                     includes="asf-logo.gif"/>
+    </cmp:sevenz>
+    <assertResourceExists>
+      <cmp:sevenzentry name="logo.gif">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceExists>
+    <assertResourceDoesntExist>
+      <cmp:sevenzentry name="/logo.gif">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceDoesntExist>
+  </target>
+
+  <target name="testPreserveLeadingSlashes" depends="setUp">
+    <cmp:sevenz destfile="${dest}" preserveleadingslashes="true">
+      <cmp:arfileset src="../resources/asf-logo.gif.ar"
+                     fullpath="/logo.gif"
+                     includes="asf-logo.gif"/>
+    </cmp:sevenz>
+    <assertResourceExists>
+      <cmp:sevenzentry name="/logo.gif">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceExists>
+    <assertResourceDoesntExist>
+      <cmp:sevenzentry name="logo.gif">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceDoesntExist>
+  </target>
+
+  <target name="testAddDuplicates" depends="setUp">
+    <cmp:sevenz destfile="${dest}" duplicate="add">
+      <cmp:arfileset src="../resources/asf-logo.gif.ar"/>
+      <cmp:zipfileset src="../resources/asf-logo.gif.zip"/>
+    </cmp:sevenz>
+    <au:assertLogContains text="duplicate entry asf-logo.gif found, adding."
+                          level="verbose"/>
+  </target>
+
+  <target name="testPreserveDuplicates" depends="setUp">
+    <cmp:sevenz destfile="${dest}" duplicate="preserve">
+      <cmp:arfileset src="../resources/asf-logo.gif.ar"/>
+      <cmp:zipfileset src="../resources/asf-logo.gif.zip"/>
+    </cmp:sevenz>
+    <au:assertLogContains text="asf-logo.gif already added, skipping."
+                          level="verbose"/>
+  </target>
+
+  <target name="testFailDuplicates" depends="setUp">
+    <au:expectfailure
+       message="Duplicate entry asf-logo.gif was found and the duplicate attribute is 'fail'.">
+      <cmp:sevenz destfile="${dest}">
+        <cmp:arfileset src="../resources/asf-logo.gif.ar"/>
+        <cmp:zipfileset src="../resources/asf-logo.gif.zip"/>
+      </cmp:sevenz>
+    </au:expectfailure>
+  </target>
+
+  <target name="testFailEmpty" depends="setUp">
+    <au:expectfailure
+       message="No sources, nothing to do.">
+      <cmp:sevenz destfile="${dest}">
+        <fileset dir="." includes="not-there"/>
+      </cmp:sevenz>
+    </au:expectfailure>
+  </target>
+
+  <target name="testSkipEmpty" depends="setUp">
+    <cmp:sevenz destfile="${dest}" whenEmpty="skip">
+      <fileset dir="." includes="not-there"/>
+    </cmp:sevenz>
+    <au:assertLogContains text="No sources, nothing to do."
+                          level="warn"/>
+    <au:assertFileDoesntExist file="${dest}"/>
+  </target>
+
+  <target name="-prepareArchiveForModeTests" depends="setUp">
+    <mkdir dir="${input}"/>
+    <copy todir="${input}">
+      <fileset dir="." includes="*r-test.xml,zip-test.xml"/>
+    </copy>
+    <cmp:sevenz dest="${dest}">
+      <fileset dir="${input}"/>
+    </cmp:sevenz>
+    <copy tofile="${dest}.bak" file="${dest}"/>
+    <property name="timestamp" value="2000-01-01-00:00:00 +0000"/>
+    <touch datetime="${timestamp}" file="${input}/zip-test.xml"
+           pattern="yyyy-MM-dd-HH:mm:ss Z"/>
+    <sleep seconds="2"/>
+    <touch file="${dest}.bak"/>
+    <sleep seconds="2"/>
+  </target>
+
+  <target name="testCreateOfUpToDate" depends="-prepareArchiveForModeTests">
+    <cmp:sevenz dest="${dest}" mode="create">
+      <fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
+    </cmp:sevenz>
+    <au:assertLogContains
+       text="test.7z is up-to-date, nothing to do."/>
+    <au:assertDestIsUptodate
+       src="${dest}" dest="${dest}.bak"/>
+  </target>
+
+  <target name="testForceCreateOfUpToDate"
+          depends="-prepareArchiveForModeTests">
+    <cmp:sevenz dest="${dest}" mode="force-create">
+      <fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
+    </cmp:sevenz>
+    <au:assertLogDoesntContain
+       text="test.7z is up-to-date, nothing to do."/>
+    <au:assertDestIsOutofdate
+       src="${dest}" dest="${dest}.bak"/>
+    <assertResourceDoesntExist>
+      <cmp:sevenzentry name="tar-test.xml">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceDoesntExist>
+  </target>
+
+  <target name="testCreateOfOutOfDate" depends="-prepareArchiveForModeTests">
+    <touch file="${input}/ar-test.xml"/>
+    <cmp:sevenz dest="${dest}" mode="create">
+      <fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
+    </cmp:sevenz>
+    <au:assertLogDoesntContain
+       text="test.7z is up-to-date, nothing to do."/>
+    <au:assertDestIsOutofdate
+       src="${dest}" dest="${dest}.bak"/>
+    <assertResourceDoesntExist>
+      <cmp:sevenzentry name="tar-test.xml">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceDoesntExist>
+  </target>
+
+  <target name="testReplaceOfUpToDate" depends="-prepareArchiveForModeTests">
+    <cmp:sevenz dest="${dest}" mode="replace">
+      <fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
+    </cmp:sevenz>
+    <au:assertLogContains
+       text="test.7z is up-to-date, nothing to do."/>
+    <au:assertDestIsUptodate
+       src="${dest}" dest="${dest}.bak"/>
+  </target>
+
+  <target name="testForceReplaceOfUpToDate"
+          depends="-prepareArchiveForModeTests">
+    <cmp:sevenz dest="${dest}" mode="force-replace">
+      <fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
+    </cmp:sevenz>
+    <au:assertLogDoesntContain
+       text="test.7z is up-to-date, nothing to do."/>
+    <au:assertDestIsOutofdate
+       src="${dest}" dest="${dest}.bak"/>
+    <assertResourceExists>
+      <cmp:sevenzentry name="tar-test.xml">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceExists>
+    <au:assertTrue>
+      <cond:islastmodified datetime="${timestamp}"
+                           pattern="yyyy-MM-dd-HH:mm:ss Z">
+        <cmp:sevenzentry name="zip-test.xml">
+          <file file="${dest}"/>
+        </cmp:sevenzentry>
+      </cond:islastmodified>
+    </au:assertTrue>
+  </target>
+
+  <target name="testReplaceOfOutOfDate" depends="-prepareArchiveForModeTests">
+    <touch file="${input}/ar-test.xml"/>
+    <cmp:sevenz dest="${dest}" mode="replace">
+      <fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
+    </cmp:sevenz>
+    <au:assertLogDoesntContain
+       text="test.7z is up-to-date, nothing to do."/>
+    <au:assertDestIsOutofdate
+       src="${dest}" dest="${dest}.bak"/>
+    <assertResourceExists>
+      <cmp:sevenzentry name="tar-test.xml">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceExists>
+    <au:assertTrue>
+      <cond:islastmodified datetime="${timestamp}"
+                           pattern="yyyy-MM-dd-HH:mm:ss Z">
+        <cmp:sevenzentry name="zip-test.xml">
+          <file file="${dest}"/>
+        </cmp:sevenzentry>
+      </cond:islastmodified>
+    </au:assertTrue>
+  </target>
+
+  <target name="testUpdateOfUpToDate" depends="-prepareArchiveForModeTests">
+    <cmp:sevenz dest="${dest}" mode="update">
+      <fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
+    </cmp:sevenz>
+    <au:assertLogContains
+       text="test.7z is up-to-date, nothing to do."/>
+    <au:assertDestIsUptodate
+       src="${dest}" dest="${dest}.bak"/>
+  </target>
+
+  <target name="testUpdateOfOutOfDate" depends="-prepareArchiveForModeTests">
+    <touch file="${input}/ar-test.xml"/>
+    <cmp:sevenz dest="${dest}" mode="update">
+      <fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
+    </cmp:sevenz>
+    <au:assertLogDoesntContain
+       text="test.7z is up-to-date, nothing to do."/>
+    <au:assertDestIsOutofdate
+       src="${dest}" dest="${dest}.bak"/>
+    <assertResourceExists>
+      <cmp:sevenzentry name="tar-test.xml">
+        <file file="${dest}"/>
+      </cmp:sevenzentry>
+    </assertResourceExists>
+    <au:assertFalse>
+      <cond:islastmodified datetime="${timestamp}"
+                           pattern="yyyy-MM-dd-HH:mm:ss Z">
+        <cmp:sevenzentry name="zip-test.xml">
+          <file file="${dest}"/>
+        </cmp:sevenzentry>
+      </cond:islastmodified>
+    </au:assertFalse>
+  </target>
+
+</project>
diff --git a/src/tests/antunit/un7z-test.xml b/src/tests/antunit/un7z-test.xml
index 739d041..2ea0dea 100644
--- a/src/tests/antunit/un7z-test.xml
+++ b/src/tests/antunit/un7z-test.xml
@@ -26,11 +26,10 @@
     <mkdir dir="${input}"/>
   </target>
 
-  <!--
   <target name="testAgainstAntlib7zTask" depends="setUp">
-    <cmp:7z destfile="${input}/test.7z">
+    <cmp:sevenz destfile="${input}/test.7z">
       <fileset dir="." includes="un7z-test.xml"/>
-    </cmp:7z>
+    </cmp:sevenz>
     <cmp:un7z src="${input}/test.7z" dest="${output}"/>
     <au:assertFileExists file="${output}/un7z-test.xml"/>
     <au:assertFilesMatch
@@ -38,7 +37,6 @@
        expected="un7z-test.xml"
        />
   </target>
-  -->
 
   <target name="testAgainstNative7z" depends="setUp">
     <cmp:un7z src="../resources/asf-logo.gif.7z" dest="${output}" />
