You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2010/09/27 22:49:00 UTC

svn commit: r1001903 - in /maven/plugins/trunk/maven-assembly-plugin: ./ src/main/java/org/apache/maven/plugin/assembly/archive/ src/main/java/org/apache/maven/plugin/assembly/archive/archiver/ src/main/java/org/apache/maven/plugin/assembly/mojos/ src/...

Author: olamy
Date: Mon Sep 27 20:49:00 2010
New Revision: 1001903

URL: http://svn.apache.org/viewvc?rev=1001903&view=rev
Log:
[MASSEMBLY-499] Poor performance in DirectoryArchiver due to unnecessary native calls
This new feature "jvm chmod" is now configuration thru a mojo parameter

Modified:
    maven/plugins/trunk/maven-assembly-plugin/pom.xml
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/AssemblyArchiver.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiver.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractDirectoryMojo.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiverTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/filter/ComponentsXmlArchiverFileFilterTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/TrackingArchiverStub.java

Modified: maven/plugins/trunk/maven-assembly-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/pom.xml?rev=1001903&r1=1001902&r2=1001903&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/pom.xml Mon Sep 27 20:49:00 2010
@@ -52,6 +52,7 @@ under the License.
   <properties>
     <mdoVersion>1.1.2</mdoVersion>
     <mavenVersion>2.2.1</mavenVersion>
+    <testOutputToFile>true</testOutputToFile>
   </properties>
 
   <dependencies>
@@ -93,7 +94,7 @@ under the License.
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-archiver</artifactId>
-      <version>1.0.1-SNAPSHOT</version>
+      <version>1.1-SNAPSHOT</version>
       <exclusions>
         <exclusion>
           <groupId>org.codehaus.plexus</groupId>
@@ -205,11 +206,11 @@ under the License.
       <scope>test</scope>
     </dependency>
     <dependency>
-    	<groupId>org.codehaus.plexus</groupId>
-    	<artifactId>plexus-component-annotations</artifactId>
-    	<version>1.5.4</version>
-    	<type>jar</type>
-    	<scope>compile</scope>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-component-annotations</artifactId>
+      <version>1.5.4</version>
+      <type>jar</type>
+      <scope>compile</scope>
     </dependency>
   </dependencies>
 
@@ -286,6 +287,12 @@ under the License.
     <pluginManagement>
       <plugins>
         <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-clean-plugin</artifactId>
+          <version>2.4.1</version>
+        </plugin>      
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           <version>2.3.1</version>
           <configuration>
@@ -294,14 +301,19 @@ under the License.
           </configuration>
         </plugin>
         <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
+          <version>2.6</version>
           <configuration>
             <excludes>
               <exclude>**/BasicAbstractAssemblyMojoFeaturesTest*</exclude>
               <exclude>**/AllTests*</exclude>
               <exclude>**/testutils/*</exclude>
             </excludes>
-            <redirectTestOutputToFile>true</redirectTestOutputToFile>
+            <redirectTestOutputToFile>${testOutputToFile}</redirectTestOutputToFile>
+            <systemPropertyVariables>
+              <java.io.tmpdir>${basedir}/target/tmpdir</java.io.tmpdir>
+            </systemPropertyVariables>
           </configuration>
         </plugin>
       </plugins>

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/AssemblyArchiver.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/AssemblyArchiver.java?rev=1001903&r1=1001902&r2=1001903&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/AssemblyArchiver.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/AssemblyArchiver.java Mon Sep 27 20:49:00 2010
@@ -33,6 +33,6 @@ public interface AssemblyArchiver
 {
     String ROLE = AssemblyArchiver.class.getName();
 
-    File createArchive( Assembly assembly, String fullName, String format, AssemblerConfigurationSource configSource )
+    File createArchive( Assembly assembly, String fullName, String format, AssemblerConfigurationSource configSource, boolean useJvmChmod )
         throws ArchiveCreationException, AssemblyFormattingException, InvalidAssemblerConfigurationException;
 }

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?rev=1001903&r1=1001902&r2=1001903&view=diff
==============================================================================
--- 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 Mon Sep 27 20:49:00 2010
@@ -133,7 +133,7 @@ public class DefaultAssemblyArchiver
      * </ol>
      */
     public File createArchive( final Assembly assembly, final String fullName, final String format,
-                               final AssemblerConfigurationSource configSource )
+                               final AssemblerConfigurationSource configSource, boolean useJvmChmod )
         throws ArchiveCreationException, AssemblyFormattingException, InvalidAssemblerConfigurationException
     {
         validate( assembly );
@@ -168,7 +168,7 @@ public class DefaultAssemblyArchiver
                 selectContainerDescriptorHandlers( assembly.getContainerDescriptorHandlers(), configSource );
 
             final Archiver archiver =
-                createArchiver( format, assembly.isIncludeBaseDirectory(), basedir, configSource, containerHandlers );
+                createArchiver( format, assembly.isIncludeBaseDirectory(), basedir, configSource, containerHandlers, useJvmChmod );
 
             archiver.setDestFile( destFile );
 
@@ -288,7 +288,7 @@ public class DefaultAssemblyArchiver
      */
     protected Archiver createArchiver( final String format, final boolean includeBaseDir, final String finalName,
                                        final AssemblerConfigurationSource configSource,
-                                       final List<ContainerDescriptorHandler> containerHandlers )
+                                       final List<ContainerDescriptorHandler> containerHandlers, boolean useJvmChmod )
         throws ArchiverException, NoSuchArchiverException
     {
         Archiver archiver;
@@ -331,8 +331,9 @@ public class DefaultAssemblyArchiver
             new AssemblyProxyArchiver( prefix, archiver, containerHandlers, extraSelectors, extraFinalizers,
                                        configSource.getWorkingDirectory(), getLogger(), configSource.isDryRun() );
 
+        archiver.setUseJvmChmod( useJvmChmod );
         archiver.setForced( !configSource.isUpdateOnly() );
-
+        
         return archiver;
     }
 

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiver.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiver.java?rev=1001903&r1=1001902&r2=1001903&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiver.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiver.java Mon Sep 27 20:49:00 2010
@@ -81,6 +81,11 @@ public class AssemblyProxyArchiver
     private final Set<String> seenPaths = new HashSet<String>();
 
     private final String assemblyWorkPath;
+    
+    /**
+     * @since 2.2-beta-6
+     */
+    private boolean useJvmChmod;
 
     public AssemblyProxyArchiver( final String rootPrefix, final Archiver delegate,
                                   final List<ContainerDescriptorHandler> containerDescriptorHandlers,
@@ -140,7 +145,7 @@ public class AssemblyProxyArchiver
 
         if ( !selectors.isEmpty() )
         {
-            this.selectors = selectors.toArray( new FileSelector[0] );
+            this.selectors = selectors.toArray( new FileSelector[selectors.size()] );
         }
     }
 
@@ -966,4 +971,14 @@ public class AssemblyProxyArchiver
         }
     }
 
+    public boolean isUseJvmChmod()
+    {
+        return useJvmChmod;
+    }
+
+    public void setUseJvmChmod( boolean useJvmChmod )
+    {
+        this.useJvmChmod = useJvmChmod;
+    }
+
 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java?rev=1001903&r1=1001902&r2=1001903&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java Mon Sep 27 20:49:00 2010
@@ -330,6 +330,16 @@ public abstract class AbstractAssemblyMo
      * @since 2.2-beta-6
      */
     private boolean updateOnly;
+    
+    /**
+     * <p>
+     * will use the jvm chmod, this is available for user and all level
+     * group level will be ignored
+     * </p>
+     * @parameter expression="${assembly.useJvmChmod}" default-value="false"
+     * @since 2.2-beta-6
+     */
+    protected boolean useJvmChmod;
 
     /**
      * Create the binary distribution.
@@ -381,7 +391,7 @@ public abstract class AbstractAssemblyMo
 
                 for ( final String format : assembly.getFormats() )
                 {
-                    final File destFile = assemblyArchiver.createArchive( assembly, fullName, format, this );
+                    final File destFile = assemblyArchiver.createArchive( assembly, fullName, format, this, useJvmChmod );
 
                     final MavenProject project = getProject();
                     final String classifier = getClassifier();

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractDirectoryMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractDirectoryMojo.java?rev=1001903&r1=1001902&r2=1001903&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractDirectoryMojo.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractDirectoryMojo.java Mon Sep 27 20:49:00 2010
@@ -84,7 +84,7 @@ public abstract class AbstractDirectoryM
 
         try
         {
-            archiver.createArchive( assembly, fullName, "dir", this );
+            archiver.createArchive( assembly, fullName, "dir", this, useJvmChmod );
         }
         catch ( final ArchiveCreationException e )
         {

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?rev=1001903&r1=1001902&r2=1001903&view=diff
==============================================================================
--- 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 Mon Sep 27 20:49:00 2010
@@ -117,7 +117,7 @@ public class DefaultAssemblyArchiverTest
         mm.replayAll();
 
         final DefaultAssemblyArchiver archiver = createSubject( macMgr, null, null );
-        archiver.createArchive( new Assembly(), "full-name", "zip", configSource );
+        archiver.createArchive( new Assembly(), "full-name", "zip", configSource, false );
 
         mm.verifyAll();
     }
@@ -210,7 +210,7 @@ public class DefaultAssemblyArchiverTest
 
         final DefaultAssemblyArchiver subject = createSubject( macMgr, Collections.singletonList( phase ), null );
 
-        subject.createArchive( assembly, "full-name", "zip", configSource );
+        subject.createArchive( assembly, "full-name", "zip", configSource, false );
 
         mm.verifyAll();
     }
@@ -270,7 +270,7 @@ public class DefaultAssemblyArchiverTest
         final DefaultAssemblyArchiver subject =
             createSubject( macArchiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
 
-        subject.createArchiver( "dummy", false, "finalName", configSource, null );
+        subject.createArchiver( "dummy", false, "finalName", configSource, null,false );
 
         assertEquals( simpleConfig, archiver.getSimpleConfig() );
 
@@ -320,7 +320,7 @@ public class DefaultAssemblyArchiverTest
         final DefaultAssemblyArchiver subject =
             createSubject( macArchiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
 
-        subject.createArchiver( "tar", false, "finalName", configSource, null );
+        subject.createArchiver( "tar", false, "finalName", configSource, null, false );
 
         assertNull( ttArchiver.compressionMethod );
         assertEquals( TarLongFileMode.FAIL, ttArchiver.longFileMode.getValue() );
@@ -368,7 +368,7 @@ public class DefaultAssemblyArchiverTest
         final DefaultAssemblyArchiver subject =
             createSubject( macArchiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
 
-        subject.createArchiver( "war", false, null, configSource, null );
+        subject.createArchiver( "war", false, null, configSource, null, false );
 
         assertFalse( twArchiver.ignoreWebxml );
     }
@@ -407,7 +407,7 @@ public class DefaultAssemblyArchiverTest
         final DefaultAssemblyArchiver subject =
             createSubject( macArchiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
 
-        subject.createArchiver( "zip", false, null, configSource, null );
+        subject.createArchiver( "zip", false, null, configSource, null, false );
     }
 
     // TODO: Re-implement these tests on the createArchiver(..) method. For now, they're no big loss.
@@ -807,6 +807,8 @@ public class DefaultAssemblyArchiverTest
     {
 
         private String simpleConfig;
+        
+        private boolean useJvmChmod;
 
         public void setSimpleConfig( final String simpleConfig )
         {
@@ -996,6 +998,16 @@ public class DefaultAssemblyArchiverTest
         {
         }
 
+        public boolean isUseJvmChmod()
+        {
+            return useJvmChmod;
+        }
+
+        public void setUseJvmChmod( boolean useJvmChmod )
+        {
+            this.useJvmChmod = useJvmChmod;
+        }
+
     }
 
 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiverTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiverTest.java?rev=1001903&r1=1001902&r2=1001903&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiverTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiverTest.java Mon Sep 27 20:49:00 2010
@@ -34,6 +34,7 @@ import org.codehaus.plexus.components.io
 import org.codehaus.plexus.components.io.fileselectors.FileSelector;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.logging.console.ConsoleLogger;
+import org.codehaus.plexus.util.FileUtils;
 import org.easymock.MockControl;
 import org.junit.AfterClass;
 import org.junit.Test;
@@ -138,6 +139,7 @@ public class AssemblyProxyArchiverTest
         final Archiver delegate = new JarArchiver();
 
         final File output = fileManager.createTempFile();
+        
         delegate.setDestFile( output );
 
         final CounterSelector counter = new CounterSelector( true );
@@ -149,6 +151,7 @@ public class AssemblyProxyArchiverTest
                                        new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ), false );
 
         final File dir = fileManager.createTempDir();
+        FileUtils.cleanDirectory( dir );
         fileManager.createFile( dir, "file.txt", "This is a test." );
 
         archiver.addDirectory( dir );

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/filter/ComponentsXmlArchiverFileFilterTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/filter/ComponentsXmlArchiverFileFilterTest.java?rev=1001903&r1=1001902&r2=1001903&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/filter/ComponentsXmlArchiverFileFilterTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/filter/ComponentsXmlArchiverFileFilterTest.java Mon Sep 27 20:49:00 2010
@@ -384,6 +384,8 @@ public class ComponentsXmlArchiverFileFi
         private File inputFile;
 
         private String destFileName;
+        
+        private boolean useJvmChmod;
 
         public void addDirectory( final File directory ) throws ArchiverException
         {
@@ -598,6 +600,16 @@ public class ComponentsXmlArchiverFileFi
         {
             throw new UnsupportedOperationException( "not supported" );
         }
+
+        public boolean isUseJvmChmod()
+        {
+            return useJvmChmod;
+        }
+
+        public void setUseJvmChmod( boolean useJvmChmod )
+        {
+            this.useJvmChmod = useJvmChmod;
+        }
     }
 
 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/TrackingArchiverStub.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/TrackingArchiverStub.java?rev=1001903&r1=1001902&r2=1001903&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/TrackingArchiverStub.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/TrackingArchiverStub.java Mon Sep 27 20:49:00 2010
@@ -52,6 +52,8 @@ public class TrackingArchiverStub
     public final List<Addition> added = new ArrayList<Addition>();
 
     public boolean created;
+    
+    private boolean useJvmChmod;
 
     public void createArchive()
         throws ArchiverException, IOException
@@ -361,4 +363,14 @@ public class TrackingArchiverStub
             }
         }
     }
+
+    public boolean isUseJvmChmod()
+    {
+        return useJvmChmod;
+    }
+
+    public void setUseJvmChmod( boolean useJvmChmod )
+    {
+        this.useJvmChmod = useJvmChmod;
+    }
 }