[ http://jira.codehaus.org/browse/MASSEMBLY-424?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=214127#action_214127 ]
Paul Smith commented on MASSEMBLY-424: -------------------------------------- through a set of thread dumps taken during an assembly run, I notice frequent time spent in this state: {noformat} "main" prio=5 tid=0x0000000102800000 nid=0x100501000 runnable [0x00000001004fe000] java.lang.Thread.State: RUNNABLE at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.<init>(UNIXProcess.java:53) at java.lang.ProcessImpl.start(ProcessImpl.java:91) at java.lang.ProcessBuilder.start(ProcessBuilder.java:452) at java.lang.Runtime.exec(Runtime.java:593) at java.lang.Runtime.exec(Runtime.java:509) at org.codehaus.plexus.util.cli.Commandline.execute(Commandline.java:636) at org.codehaus.plexus.util.cli.CommandLineUtils.executeCommandLine(CommandLineUtils.java:140) at org.codehaus.plexus.util.cli.CommandLineUtils.executeCommandLine(CommandLineUtils.java:103) at org.codehaus.plexus.components.io.attributes.PlexusIoResourceAttributeUtils.executeLs(PlexusIoResourceAttributeUtils.java:277) at org.codehaus.plexus.components.io.attributes.PlexusIoResourceAttributeUtils.getFileAttributesByPath(PlexusIoResourceAttributeUtils.java:237) at org.codehaus.plexus.components.io.attributes.PlexusIoResourceAttributeUtils.getFileAttributes(PlexusIoResourceAttributeUtils.java:167) at org.codehaus.plexus.archiver.ArchiveEntry.createFileEntry(ArchiveEntry.java:157) at org.codehaus.plexus.archiver.AbstractArchiver.addFile(AbstractArchiver.java:374) at org.codehaus.plexus.archiver.AbstractArchiver.addFile(AbstractArchiver.java:290) at org.apache.maven.plugin.assembly.archive.archiver.AssemblyProxyArchiver.addFile(AssemblyProxyArchiver.java:474) at org.apache.maven.plugin.assembly.archive.task.AddArtifactTask.execute(AddArtifactTask.java:203) at org.apache.maven.plugin.assembly.archive.task.AddDependencySetsTask.addDependencySet(AddDependencySetsTask.java:195) at org.apache.maven.plugin.assembly.archive.task.AddDependencySetsTask.execute(AddDependencySetsTask.java:122) at org.apache.maven.plugin.assembly.archive.phase.ModuleSetAssemblyPhase.addModuleBinaries(ModuleSetAssemblyPhase.java:236) at org.apache.maven.plugin.assembly.archive.phase.ModuleSetAssemblyPhase.execute(ModuleSetAssemblyPhase.java:131) at org.apache.maven.plugin.assembly.archive.DefaultAssemblyArchiver.createArchive(DefaultAssemblyArchiver.java:190) at org.apache.maven.plugin.assembly.mojos.AbstractDirectoryMojo.createDirectory(AbstractDirectoryMojo.java:85) at org.apache.maven.plugin.assembly.mojos.AbstractDirectoryMojo.execute(AbstractDirectoryMojo.java:63) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:483) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:678) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:553) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:523) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:371) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:268) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:181) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137) at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:41) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) {noformat} >From looking into the >PlexusIoResourceAttributeUtils.getFileAttributesByPath(..) method used by the >addFile method during the dependency archive, it is doing a Process Fork >per-Dependency to get the file attributes, which is a bit yucky.... that's not >going to scale very well at all. > poor performance of dependencySet in assembly descriptor (compared to using > maven-dependency-plugin + fileSet) > -------------------------------------------------------------------------------------------------------------- > > Key: MASSEMBLY-424 > URL: http://jira.codehaus.org/browse/MASSEMBLY-424 > Project: Maven 2.x Assembly Plugin > Issue Type: Bug > Affects Versions: 2.2-beta-4 > Environment: maven 2.1.0, java 6u13, os x 10.5.6, macbook pro 5400rpm > disk > Reporter: Cameron Fieber > Priority: Critical > > The performance of the dependencySet element in the assembly descriptor is > significantly worse than achieving the equivalent result by doing an > execution of dependency:copy-dependencies and including the > target/dependencies folder as a fileSet in the assembly descriptor > replacing: > <assembly> > ... > <dependencySets> > <dependencySet> > <outputDirectory>lib</outputDirectory> > </dependencySet> > </dependencySets> > ... > </assembly> > with: > <assembly> > ... > <fileSet> > <directory>${project.build.directory}/dependency</directory> > <outputDirectory>lib</outputDirectory> > </fileSet> > ... > </assembly> > and (in pom.xml): > ... > <build> > <plugins> > <plugin> > <groupId>org.apache.maven.plugins</groupId> > <artifactId>maven-dependency-plugin</artifactId> > <executions> > <execution> > <phase>package</phase> > <goals> > <goal>copy-dependencies</goal> > </goals> > <configuration> > <includeScope>runtime</includeScope> > </configuration> > </execution> > </executions> > </plugin> > <plugin> > <groupId>org.apache.maven.plugins</groupId> > <artifactId>maven-assembly-plugin</artifactId> > ... -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira