Author: jdcasey
Date: Thu Jan 11 22:35:17 2007
New Revision: 495495
URL: http://svn.apache.org/viewvc?view=rev&rev=495495
Log:
[MASSEMBLY-161][MASSEMBLY-174] Wiring up jar archive configuration to the
assembly creation process.
Added:
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/goals.txt
(with props)
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/pom.xml
(with props)
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/test/
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/test/App.java
(with props)
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/test/
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/test/AppTest.java
(with props)
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/verify.bsh
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/goals.txt
(with props)
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/pom.xml
(with props)
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/test/
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/test/App.java
(with props)
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/test/
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/test/AppTest.java
(with props)
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/verify.bsh
Modified:
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java
Added:
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/goals.txt
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/goals.txt?view=auto&rev=495495
==============================================================================
---
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/goals.txt
(added)
+++
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/goals.txt
Thu Jan 11 22:35:17 2007
@@ -0,0 +1 @@
+package
\ No newline at end of file
Propchange:
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/goals.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/goals.txt
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/pom.xml
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/pom.xml?view=auto&rev=495495
==============================================================================
---
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/pom.xml
(added)
+++
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/pom.xml
Thu Jan 11 22:35:17 2007
@@ -0,0 +1,39 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>test</groupId>
+ <artifactId>jars-in-archive-root</artifactId>
+ <packaging>jar</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <name>Maven Quick Start Archetype</name>
+ <url>http://maven.apache.org</url>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+
<artifactId>maven-assembly-plugin</artifactId><version>testing</version>
+ <executions>
+ <execution>
+ <id>assembly</id>
+ <phase>package</phase>
+ <goals>
+ <goal>attached</goal>
+ </goals>
+ <configuration>
+ <descriptorRefs>
+ <descriptorRef>bin</descriptorRef>
+ </descriptorRefs>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Propchange:
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/pom.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/test/App.java
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/test/App.java?view=auto&rev=495495
==============================================================================
---
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/test/App.java
(added)
+++
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/test/App.java
Thu Jan 11 22:35:17 2007
@@ -0,0 +1,13 @@
+package test;
+
+/**
+ * Hello world!
+ *
+ */
+public class App
+{
+ public static void main( String[] args )
+ {
+ System.out.println( "Hello World!" );
+ }
+}
Propchange:
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/test/App.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/main/java/test/App.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/test/AppTest.java
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/test/AppTest.java?view=auto&rev=495495
==============================================================================
---
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/test/AppTest.java
(added)
+++
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/test/AppTest.java
Thu Jan 11 22:35:17 2007
@@ -0,0 +1,38 @@
+package test;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}
Propchange:
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/test/AppTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/src/test/java/test/AppTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/verify.bsh
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/verify.bsh?view=auto&rev=495495
==============================================================================
---
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/verify.bsh
(added)
+++
maven/plugins/trunk/maven-assembly-plugin/src/it/descriptor-refs/bin/jars-in-archive-root/verify.bsh
Thu Jan 11 22:35:17 2007
@@ -0,0 +1,42 @@
+import java.io.*;
+import java.net.*;
+import java.util.zip.*;
+
+boolean result = true;
+
+String basename = "jars-in-archive-root-1.0-SNAPSHOT";
+
+try
+{
+ File zipFile = new File( basedir, "target/" + basename + "-bin.zip" );
+
+ System.out.println( "Checking for existence and file-ishness of: " +
zipFile );
+
+ if ( !zipFile.exists() || zipFile.isDirectory() )
+ {
+ System.err.println( "zip file is missing or a directory." );
+ return false;
+ }
+
+ System.out.println( "Creating zipFile instance." );
+
+ ZipFile zf = new ZipFile( zipFile );
+
+ System.out.println( "Looking for project-artifact jar zip entry." );
+
+ ZipEntry je = zf.getEntry( basename + "/" + basename + ".jar" );
+
+ if ( je == null )
+ {
+ System.out.println( "project artifact is missing from archive root
dir." );
+ result = false;
+ }
+
+}
+catch( IOException e )
+{
+ e.printStackTrace( System.out );
+ result = false;
+}
+
+return result;
Added:
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/goals.txt
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/goals.txt?view=auto&rev=495495
==============================================================================
---
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/goals.txt
(added)
+++
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/goals.txt
Thu Jan 11 22:35:17 2007
@@ -0,0 +1 @@
+package
\ No newline at end of file
Propchange:
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/goals.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/goals.txt
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/pom.xml
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/pom.xml?view=auto&rev=495495
==============================================================================
---
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/pom.xml
(added)
+++
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/pom.xml
Thu Jan 11 22:35:17 2007
@@ -0,0 +1,44 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>test</groupId>
+ <artifactId>manifest-with-mainClass</artifactId>
+ <packaging>jar</packaging>
+ <version>1</version>
+ <name>Maven Quick Start Archetype</name>
+ <url>http://maven.apache.org</url>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+
<artifactId>maven-assembly-plugin</artifactId><version>testing</version>
+ <executions>
+ <execution>
+ <id>assembly</id>
+ <phase>package</phase>
+ <goals>
+ <goal>attached</goal>
+ </goals>
+ <configuration>
+ <descriptorRefs>
+ <descriptorRef>jar-with-dependencies</descriptorRef>
+ </descriptorRefs>
+ <archive>
+ <manifest>
+ <mainClass>test.App</mainClass>
+ </manifest>
+ </archive>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Propchange:
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/pom.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/test/App.java
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/test/App.java?view=auto&rev=495495
==============================================================================
---
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/test/App.java
(added)
+++
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/test/App.java
Thu Jan 11 22:35:17 2007
@@ -0,0 +1,13 @@
+package test;
+
+/**
+ * Hello world!
+ *
+ */
+public class App
+{
+ public static void main( String[] args )
+ {
+ System.out.println( "Hello World!" );
+ }
+}
Propchange:
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/test/App.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/main/java/test/App.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/test/AppTest.java
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/test/AppTest.java?view=auto&rev=495495
==============================================================================
---
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/test/AppTest.java
(added)
+++
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/test/AppTest.java
Thu Jan 11 22:35:17 2007
@@ -0,0 +1,38 @@
+package test;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}
Propchange:
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/test/AppTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/src/test/java/test/AppTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/verify.bsh
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/verify.bsh?view=auto&rev=495495
==============================================================================
---
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/verify.bsh
(added)
+++
maven/plugins/trunk/maven-assembly-plugin/src/it/mojo-configuration/manifest-with-mainClass/verify.bsh
Thu Jan 11 22:35:17 2007
@@ -0,0 +1,20 @@
+import java.io.*;
+import java.util.jar.*;
+import java.util.*;
+import java.net.*;
+
+File file = new File( basedir,
"target/manifest-with-mainClass-1-jar-with-dependencies.jar" );
+
+System.out.println( "file: " + file + " exists? " + file.exists() );
+
+JarFile jarFile = new JarFile( file );
+
+Manifest mf = jarFile.getManifest();
+
+Attributes attrs = mf.getMainAttributes();
+
+String mainClass = (String) attrs.get( Attributes.Name.MAIN_CLASS );
+
+System.out.println( "Got Main-Class: " + mainClass );
+
+return "test.App".equals( mainClass );
Modified:
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java?view=diff&rev=495495&r1=495494&r2=495495
==============================================================================
---
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
(original)
+++
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
Thu Jan 11 22:35:17 2007
@@ -26,7 +26,6 @@
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -49,12 +48,12 @@
* @plexus.requirement
role="org.apache.maven.plugin.assembly.archive.phase.AssemblyArchiverPhase"
*/
private List assemblyPhases;
-
+
public DefaultAssemblyArchiver()
{
// needed for plexus
}
-
+
// introduced for testing.
public DefaultAssemblyArchiver( ArchiverManager archiverManager, List
assemblyPhases )
{
@@ -67,9 +66,9 @@
throws ArchiveCreationException, AssemblyFormattingException,
InvalidAssemblerConfigurationException
{
String filename = fullName + "." + format;
-
+
AssemblyFileUtils.verifyTempDirectoryAvailability(
configSource.getTemporaryRootDirectory(), getLogger() );
-
+
ComponentsXmlArchiverFileFilter componentsXmlFilter = new
ComponentsXmlArchiverFileFilter();
File outputDirectory = configSource.getOutputDirectory();
@@ -80,25 +79,27 @@
{
String finalName = configSource.getFinalName();
String specifiedBasedir = assembly.getBaseDirectory();
-
+
String basedir = finalName;
-
+
if ( specifiedBasedir != null )
{
- basedir = AssemblyFormatUtils.getOutputDirectory(
specifiedBasedir, configSource.getProject(), finalName );
+ basedir = AssemblyFormatUtils.getOutputDirectory(
specifiedBasedir, configSource.getProject(),
+ finalName );
}
-
- Archiver archiver = createArchiver( format,
assembly.isIncludeBaseDirectory(), basedir, configSource.getTarLongFileMode(),
componentsXmlFilter );
+
+ Archiver archiver = createArchiver( format,
assembly.isIncludeBaseDirectory(), basedir, configSource,
+ componentsXmlFilter );
for ( Iterator phaseIterator = assemblyPhases.iterator();
phaseIterator.hasNext(); )
{
- AssemblyArchiverPhase phase = ( AssemblyArchiverPhase )
phaseIterator.next();
+ AssemblyArchiverPhase phase = (AssemblyArchiverPhase)
phaseIterator.next();
phase.execute( assembly, archiver, configSource );
}
archiver.setDestFile( destFile );
-
+
archiver.createArchive();
}
catch ( ArchiverException e )
@@ -123,25 +124,26 @@
* @param format
* Archive format
* @param includeBaseDir
- * @param tarLongFileMode
+ * @param configSource
* @param finalName
* @param string
* @return archiver Archiver generated
* @throws org.codehaus.plexus.archiver.ArchiverException
* @throws org.codehaus.plexus.archiver.manager.NoSuchArchiverException
*/
- protected Archiver createArchiver( String format, boolean includeBaseDir,
String finalName,
- String tarLongFileMode,
ComponentsXmlArchiverFileFilter componentsXmlFilter )
+ protected Archiver createArchiver( String format, boolean includeBaseDir,
String finalName,
+ AssemblerConfigurationSource
configSource,
+ ComponentsXmlArchiverFileFilter
componentsXmlFilter )
throws ArchiverException, NoSuchArchiverException
{
Archiver archiver;
if ( format.startsWith( "tar" ) )
{
- archiver = createTarArchiver( format, tarLongFileMode );
+ archiver = createTarArchiver( format,
configSource.getTarLongFileMode() );
}
else if ( "war".equals( format ) )
{
- archiver = createWarArchiver( );
+ archiver = createWarArchiver();
}
else
{
@@ -150,8 +152,8 @@
configureArchiverFilters( archiver, componentsXmlFilter );
- configureArchiverFinalizers( archiver, componentsXmlFilter );
-
+ configureArchiverFinalizers( archiver, format, configSource,
componentsXmlFilter );
+
if ( includeBaseDir )
{
archiver = new PrefixingProxyArchiver( finalName, archiver );
@@ -160,11 +162,24 @@
return archiver;
}
- protected void configureArchiverFinalizers( Archiver archiver,
ComponentsXmlArchiverFileFilter componentsXmlFilter )
+ protected void configureArchiverFinalizers( Archiver archiver, String
format,
+ AssemblerConfigurationSource
configSource,
+
ComponentsXmlArchiverFileFilter componentsXmlFilter )
{
if ( archiver instanceof FinalizerEnabled )
{
- ( ( FinalizerEnabled ) archiver ).setArchiveFinalizers(
Collections.singletonList( componentsXmlFilter ) );
+ List finalizers = new ArrayList();
+
+ finalizers.add( componentsXmlFilter );
+
+ if ( "jar".equals( format ) )
+ {
+ finalizers.add( new ManifestCreationFinalizer(
configSource.getProject(), configSource
+ .getJarArchiveConfiguration() ) );
+ }
+
+ ( (FinalizerEnabled) archiver ).setArchiveFinalizers( finalizers );
+
}
}
@@ -185,14 +200,14 @@
filters.add( JAR_SECURITY_FILE_FILTER );
}
- ( ( FilterEnabled ) archiver ).setArchiveFilters( filters );
+ ( (FilterEnabled) archiver ).setArchiveFilters( filters );
}
}
protected Archiver createWarArchiver()
throws NoSuchArchiverException
{
- WarArchiver warArchiver = ( WarArchiver )
this.archiverManager.getArchiver( "war" );
+ WarArchiver warArchiver = (WarArchiver)
this.archiverManager.getArchiver( "war" );
warArchiver.setIgnoreWebxml( false ); // See MNG-1274
return warArchiver;
@@ -201,7 +216,7 @@
protected Archiver createTarArchiver( String format, String
tarLongFileMode )
throws NoSuchArchiverException, ArchiverException
{
- TarArchiver tarArchiver = ( TarArchiver )
this.archiverManager.getArchiver( "tar" );
+ TarArchiver tarArchiver = (TarArchiver)
this.archiverManager.getArchiver( "tar" );
int index = format.indexOf( '.' );
if ( index >= 0 )
{
@@ -232,7 +247,7 @@
tarFileMode.setValue( tarLongFileMode );
tarArchiver.setLongfile( tarFileMode );
-
+
return tarArchiver;
}
Modified:
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java?view=diff&rev=495495&r1=495494&r2=495495
==============================================================================
---
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java
(original)
+++
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java
Thu Jan 11 22:35:17 2007
@@ -1,5 +1,7 @@
package org.apache.maven.plugin.assembly.archive;
+import org.apache.maven.archiver.MavenArchiveConfiguration;
+import org.apache.maven.model.Model;
import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
import org.apache.maven.plugin.assembly.archive.phase.AssemblyArchiverPhase;
@@ -8,6 +10,8 @@
import org.apache.maven.plugin.assembly.model.Assembly;
import org.apache.maven.plugin.assembly.testutils.MockManager;
import org.apache.maven.plugin.assembly.testutils.TestFileManager;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.archiver.ArchiveFinalizer;
import org.codehaus.plexus.archiver.Archiver;
import org.codehaus.plexus.archiver.ArchiverException;
import org.codehaus.plexus.archiver.FilterEnabled;
@@ -20,12 +24,16 @@
import org.codehaus.plexus.archiver.zip.ZipArchiver;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.FileUtils;
+import org.easymock.ArgumentsMatcher;
import org.easymock.MockControl;
import java.io.File;
import java.io.IOException;
import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
+import java.util.Set;
import junit.framework.Assert;
import junit.framework.TestCase;
@@ -90,9 +98,6 @@
configSource.getOutputDirectory();
csControl.setReturnValue( outDir );
- configSource.getTarLongFileMode();
- csControl.setReturnValue( null );
-
configSource.getFinalName();
csControl.setReturnValue( "finalName" );
@@ -117,6 +122,14 @@
MockAndControlForArchiverManager macArchiverManager = new
MockAndControlForArchiverManager( mm );
macArchiverManager.expectGetArchiver( "tar", ttArchiver );
+
+ MockControl configCtl = MockControl.createControl(
AssemblerConfigurationSource.class );
+ AssemblerConfigurationSource configSource =
(AssemblerConfigurationSource) configCtl.getMock();
+
+ configSource.getTarLongFileMode();
+ configCtl.setReturnValue( TarLongFileMode.FAIL,
MockControl.ZERO_OR_MORE );
+
+ mm.add( configCtl );
ComponentsXmlArchiverFileFilter filter = new
ComponentsXmlArchiverFileFilter();
@@ -125,7 +138,7 @@
DefaultAssemblyArchiver subject =
createSubject( macArchiverManager.archiverManager,
Collections.EMPTY_LIST, null );
- subject.createArchiver( "tar", false, "finalName",
TarLongFileMode.FAIL, filter );
+ subject.createArchiver( "tar", false, "finalName", configSource,
filter );
assertNull( ttArchiver.compressionMethod );
assertEquals( TarLongFileMode.FAIL, ttArchiver.longFileMode.getValue()
);
@@ -192,7 +205,7 @@
DefaultAssemblyArchiver subject =
createSubject( macArchiverManager.archiverManager,
Collections.EMPTY_LIST, null );
- subject.configureArchiverFinalizers( macArchiverManager.archiver,
filter );
+ subject.configureArchiverFinalizers( macArchiverManager.archiver,
"format", null, filter );
mm.verifyAll();
}
@@ -204,16 +217,37 @@
MockAndControlForArchiverManager macArchiverManager = new
MockAndControlForArchiverManager( mm );
macArchiverManager.createArchiver( TestFinalizerFilteredArchiver.class
);
- macArchiverManager.expectSetArchiverFinalizers();
+
+ Set finalizerClasses = new HashSet();
+ finalizerClasses.add( ComponentsXmlArchiverFileFilter.class );
+ finalizerClasses.add( ManifestCreationFinalizer.class );
+
+ macArchiverManager.expectSetArchiverFinalizers( finalizerClasses );
ComponentsXmlArchiverFileFilter filter = new
ComponentsXmlArchiverFileFilter();
+
+ MockControl configCtl = MockControl.createControl(
AssemblerConfigurationSource.class );
+ AssemblerConfigurationSource configSource =
(AssemblerConfigurationSource) configCtl.getMock();
+
+ Model model = new Model();
+ model.setGroupId( "group" );
+ model.setArtifactId( "artifact" );
+ model.setVersion( "1" );
+
+ configSource.getProject();
+ configCtl.setReturnValue( new MavenProject( model ),
MockControl.ZERO_OR_MORE );
+
+ configSource.getJarArchiveConfiguration();
+ configCtl.setReturnValue( new MavenArchiveConfiguration() );
+
+ mm.add( configCtl );
mm.replayAll();
DefaultAssemblyArchiver subject =
createSubject( macArchiverManager.archiverManager,
Collections.EMPTY_LIST, null );
- subject.configureArchiverFinalizers( macArchiverManager.archiver,
filter );
+ subject.configureArchiverFinalizers( macArchiverManager.archiver,
"jar", configSource, filter );
mm.verifyAll();
}
@@ -427,6 +461,36 @@
{
( ( FinalizerEnabled ) archiver ).setArchiveFinalizers( null );
archiverControl.setMatcher( MockControl.ALWAYS_MATCHER );
+ }
+
+ void expectSetArchiverFinalizers( final Set finalizerClasses )
+ {
+ ( ( FinalizerEnabled ) archiver ).setArchiveFinalizers( null );
+ archiverControl.setMatcher( new ArgumentsMatcher()
+ {
+
+ public boolean matches( Object[] expected, Object[] actual )
+ {
+ boolean match = true;
+ List actualClasses = (List) actual[0];
+
+ Set finClasses = new HashSet( finalizerClasses );
+
+ for ( Iterator it = actualClasses.iterator();
it.hasNext(); )
+ {
+ ArchiveFinalizer finalizer = (ArchiveFinalizer)
it.next();
+ match = match && finClasses.remove(
finalizer.getClass() );
+ }
+
+ return match;
+ }
+
+ public String toString( Object[] arguments )
+ {
+ return "Matcher for finalizer-classes: " +
finalizerClasses;
+ }
+
+ });
}
void expectSetArchiverFilters()