[MASSEMBLY-711] Add support for generating XZ compressed tarballs (.tar.xz)
Submitted-by: Mat Booth <mat.booth@redhat.com>
This closes #99
git-svn-id: https://svn.apache.org/repos/asf/maven/plugins/trunk@1773447 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/it/projects/basic-features/formats/src/assemblies/format-test.xml b/src/it/projects/basic-features/formats/src/assemblies/format-test.xml
index 16aa45a..e37f556 100644
--- a/src/it/projects/basic-features/formats/src/assemblies/format-test.xml
+++ b/src/it/projects/basic-features/formats/src/assemblies/format-test.xml
@@ -32,6 +32,8 @@
<format>jar</format>
<format>war</format>
<format>tar.snappy</format>
+ <format>tar.xz</format>
+ <format>txz</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<files>
diff --git a/src/it/projects/basic-features/formats/verify.bsh b/src/it/projects/basic-features/formats/verify.bsh
index e3557a0..a7330fb 100644
--- a/src/it/projects/basic-features/formats/verify.bsh
+++ b/src/it/projects/basic-features/formats/verify.bsh
@@ -144,4 +144,28 @@
result = false;
}
+try
+{
+ File assembly = new File( basedir, "target/assemblies/format-test-1.0.tar.xz" );
+ result = result && assembly.exists();
+ result = result && assembly.isFile();
+}
+catch( IOException e )
+{
+ e.printStackTrace();
+ result = false;
+}
+
+try
+{
+ File assembly = new File( basedir, "target/assemblies/format-test-1.0.txz" );
+ result = result && assembly.exists();
+ result = result && assembly.isFile();
+}
+catch( IOException e )
+{
+ e.printStackTrace();
+ result = false;
+}
+
return result;
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java b/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java
index c5e9a1d..e54fc01 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java
@@ -293,7 +293,7 @@
throws NoSuchArchiverException
{
Archiver archiver;
- if ( "tgz".equals( format ) || "tbz2".equals( format ) || format.startsWith( "tar" ) )
+ if ( "txz".equals( format ) || "tgz".equals( format ) || "tbz2".equals( format ) || format.startsWith( "tar" ) )
{
archiver = createTarArchiver( format, TarLongFileMode.valueOf( configSource.getTarLongFileMode() ) );
}
@@ -514,6 +514,10 @@
{
tarCompressionMethod = TarArchiver.TarCompressionMethod.bzip2;
}
+ else if ( "xz".equals( compression ) )
+ {
+ tarCompressionMethod = TarArchiver.TarCompressionMethod.xz;
+ }
else if ( "snappy".equals( compression ) )
{
tarCompressionMethod = TarArchiver.TarCompressionMethod.snappy;
@@ -533,6 +537,10 @@
{
tarArchiver.setCompression( TarArchiver.TarCompressionMethod.bzip2 );
}
+ else if ( "txz".equals( format ) )
+ {
+ tarArchiver.setCompression( TarArchiver.TarCompressionMethod.xz );
+ }
tarArchiver.setLongfile( tarLongFileMode );
diff --git a/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java b/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
index 0660bbc..c6a00ff 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
@@ -163,6 +163,7 @@
* <li><em>tar.gz</em> or <em>tgz</em> - Creates a gzip'd TAR format</li>
* <li><em>tar.bz2</em> or <em>tbz2</em> - Creates a bzip'd TAR format</li>
* <li><em>tar.snappy</em> - Creates a snappy'd TAR format</li>
+ * <li><em>tar.xz</em> or <em>txz</em> - Creates a xz'd TAR format</li>
* </ul>
*/
@Parameter
diff --git a/src/main/mdo/assembly.mdo b/src/main/mdo/assembly.mdo
index cb3c9de..a91081a 100644
--- a/src/main/mdo/assembly.mdo
+++ b/src/main/mdo/assembly.mdo
@@ -109,6 +109,7 @@
<li><b>"tar.gz"</b> or <b>"tgz"</b> - Creates a gzip'd TAR format</li>
<li><b>"tar.bz2"</b> or <b>"tbz2"</b> - Creates a bzip'd TAR format</li>
<li><b>"tar.snappy"</b> - Creates a snappy'd TAR format</li>
+ <li><b>"tar.xz"</b> or <b>"txz"</b> - Creates a xz'd TAR format</li>
<li><b>"jar"</b> - Creates a JAR format</li>
<li><b>"dir"</b> - Creates an exploded directory format</li>
<li><b>"war"</b> - Creates a WAR format</li>
diff --git a/src/site/apt/index.apt.vm b/src/site/apt/index.apt.vm
index 74c29f9..0139eef 100644
--- a/src/site/apt/index.apt.vm
+++ b/src/site/apt/index.apt.vm
@@ -56,6 +56,8 @@
* tar.snappy
+ * tar.xz (or txz)
+
* jar
* dir
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java
index 3ccf4ee..b404ab3 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java
@@ -19,7 +19,6 @@
* under the License.
*/
-import junit.framework.Assert;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.model.Model;
import org.apache.maven.plugins.assembly.AssemblerConfigurationSource;
@@ -50,6 +49,7 @@
import org.codehaus.plexus.util.FileUtils;
import org.easymock.classextension.EasyMockSupport;
import org.junit.AfterClass;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -482,6 +482,42 @@
}
@Test
+ public void testCreateTarArchiver_TarXzFormat_ShouldInitializeXzCompression()
+ throws NoSuchArchiverException, ArchiverException
+ {
+ final EasyMockSupport mm = new EasyMockSupport();
+
+ final TestTarArchiver ttArchiver = new TestTarArchiver();
+
+ final DefaultAssemblyArchiver subject = createSubject( mm, ttArchiver );
+
+ subject.createTarArchiver( "tar.xz", TarLongFileMode.fail );
+
+ assertEquals( TarArchiver.TarCompressionMethod.xz, ttArchiver.compressionMethod );
+ assertEquals( TarLongFileMode.fail, ttArchiver.longFileMode );
+
+ mm.verifyAll();
+ }
+
+ @Test
+ public void testCreateTarArchiver_TXzFormat_ShouldInitializeXzCompression()
+ throws NoSuchArchiverException, ArchiverException
+ {
+ final EasyMockSupport mm = new EasyMockSupport();
+
+ final TestTarArchiver ttArchiver = new TestTarArchiver();
+
+ final DefaultAssemblyArchiver subject = createSubject( mm, ttArchiver );
+
+ subject.createTarArchiver( "txz", TarLongFileMode.fail );
+
+ assertEquals( TarArchiver.TarCompressionMethod.xz, ttArchiver.compressionMethod );
+ assertEquals( TarLongFileMode.fail, ttArchiver.longFileMode );
+
+ mm.verifyAll();
+ }
+
+ @Test
public void testCreateTarArchiver_InvalidFormat_ShouldFailWithInvalidCompression()
throws NoSuchArchiverException, ArchiverException
{