You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "David Boden (JIRA)" <ji...@codehaus.org> on 2011/09/30 16:53:17 UTC

[jira] Issue Comment Edited: (MASSEMBLY-424) poor performance of dependencySet in assembly descriptor (compared to using maven-dependency-plugin + fileSet)

    [ https://jira.codehaus.org/browse/MASSEMBLY-424?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=280380#comment-280380 ] 

David Boden edited comment on MASSEMBLY-424 at 9/30/11 9:53 AM:
----------------------------------------------------------------

I'd be grateful if an someone "in the know" could either reopen this issue or spin my comments off into a separate Jira.

With a large build, forking (twice!) to execute an "ls" on Linux to find out the file attributes (owner, permissions) results in thousands of forked processes and a huge amount of added build time.

I've cut down my build time by a factor of 10 by:

  * Checking out tag 2.2.1 of maven-assembly-plugin
  * Changing the following dependency versions:

      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-io</artifactId>
      <version>2.0.1</version>

AND

      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-utils</artifactId>
      <version>3.0</version>

  * Upgrading to Java 7 - The reason for this is in PlexusIoResourceAttributeUtils.java line 224, under the newer plexus-io-2.0.1 jar.
      * The plexus io utility checks whether we're building under Java 7 and if we are, uses (fast) Java calls to look at the file properties rather than forking an "ls".
      * It uses Java 7's: http://download.oracle.com/javase/7/docs/api/java/nio/file/attribute/PosixFilePermissions.html

Hopefully this is very simple to do on the assembly plugin trunk and, by switching to Java 7, other users can speed up their builds.


      was (Author: david.boden@nomura.com):
    I'd be grateful if an someone "in the know" could either reopen this issue or spin my comments off into a separate Jira.

With a large build, forking (twice!) to execute an "ls" on Linux to find out the file attributes (owner, permissions) results in thousands of forked processes and a huge amount of added build time.

I've cut down my build time by a factor of 10 by:

  * Checking out tag 2.2.1 of maven-assembly-plugin
  * Changing the following dependency versions:

      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-io</artifactId>
      <version>2.0.1</version>

AND

      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-utils</artifactId>
      <version>3.0</version>

  * Upgrading to Java 7 - The reason for this is in PlexusIoResourceAttributeUtils.java line 224, under the newer plexus-io-2.0.1 jar.
      * The plexus io utility checks whether we're building under Java 7 and if we are, uses (fast) Java calls to look at the file properties rather than forking an "ls".

Hopefully this is very simple to do on the assembly plugin trunk and, by switching to Java 7, other users can speed up their builds.


  
> poor performance of dependencySet in assembly descriptor (compared to using maven-dependency-plugin + fileSet)
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: MASSEMBLY-424
>                 URL: https://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
>            Assignee: John Casey
>            Priority: Critical
>             Fix For: 2.2
>
>
> 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.
For more information on JIRA, see: http://www.atlassian.com/software/jira