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;
+ }
}