[ 
https://issues.apache.org/jira/browse/MASSEMBLY-875?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16359035#comment-16359035
 ] 

Stu commented on MASSEMBLY-875:
-------------------------------

Ok, I'll get this pushed to a public repo, but for now, I created an empty 
project (using maven-archetype-quickstart, and deleting the tests):

 
{code:java}
<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/xsd/maven-4.0.0.xsd";>
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.shareplaylearn</groupId>
  <artifactId>MASSEMBLY-875</artifactId>
  <version>1.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>MASSEMBLY-875</name>
  <url>http://maven.apache.org</url>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>com.shareplaylearn</groupId>
      <artifactId>MASSEMBLY-875-lib</artifactId>
      <version>1.2-SNAPSHOT</version>
      <exclusions>
        <exclusion>
          <groupId>io.netty</groupId>
          <artifactId>netty-all</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>
</project>
{code}

I then created another dummy project (no source code) for the lib:

{code}
<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/xsd/maven-4.0.0.xsd";>
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.shareplaylearn</groupId>
  <artifactId>MASSEMBLY-875-lib</artifactId>
  <version>1.2-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>MASSEMBLY-875-lib</name>
  <url>http://maven.apache.org</url>

  <!-- add deployment repo here -->

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <!-- Ensure that source code is packaged and deployed for inclusion 
into IDEs -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.0.1</version>
        <executions>
          <execution>
            <id>attach-source</id>
            <phase>verify</phase>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.8.2</version>
    </dependency>
    <dependency>
      <groupId>net.lightbody.bmp</groupId>
      <artifactId>browsermob-core</artifactId>
      <version>2.1.5</version>
    </dependency>
    <!-- test -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>2.13.0</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
{code}

I deployed the lib to a local repo, and then built the original project.
With maven assembly 3.1.0 -> over a minute to build the final 
-with-dependencies jar (close to 2 min!):
{code}
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:42 min
[INFO] Finished at: 2018-02-09T14:05:14-08:00
[INFO] Final Memory: 211M/2644M
{code}

With maven assembly 2.6 -> a little over 2 seconds.
{code}
[INFO] Building jar: 
/home/stuart.smith/workspace/MASSEMBLY875/target/MASSEMBLY-875-1.1-SNAPSHOT-jar-with-dependencies.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.231 s
[INFO] Finished at: 2018-02-09T14:06:34-08:00
[INFO] Final Memory: 56M/408M
{code}

I'll start whittling away the dependencies in the lib, and see what happens 
there.

> Maven 3.x is about 10x slower than 2.6
> --------------------------------------
>
>                 Key: MASSEMBLY-875
>                 URL: https://issues.apache.org/jira/browse/MASSEMBLY-875
>             Project: Maven Assembly Plugin
>          Issue Type: Bug
>            Reporter: Stu
>            Priority: Minor
>
> In all our java projects, we have a fairly basic assembly configuration, 
> something like this:
> {code:java}
> <plugin>
>     <artifactId>maven-assembly-plugin</artifactId>
>     <version>2.6</version>
>     <configuration>
>         <archive>
>             <manifest>
>                 <mainClass>org.x.x.x</mainClass>
>             </manifest>
>         </archive>
>         <descriptorRefs>
>             <descriptorRef>jar-with-dependencies</descriptorRef>
>         </descriptorRefs>
>     </configuration>
>     <executions>
>         <execution>
>             <id>make-assembly</id>
>             <phase>package</phase>
>             <goals>
>                 <goal>single</goal>
>             </goals>
>         </execution>
>     </executions>
> </plugin>{code}
> They all take about 10x longer with any 3.x.x version of the maven assembly 
> plugin than the 2.6 version.
> This has been noticed by others:
> [https://stackoverflow.com/questions/9009232/what-sort-of-configuration-issues-or-problems-might-make-maven-assembly-plugin-g/24519615#24519615]
> But not reported as a bug that I could find.
> Although I could only justify "Minor" for the priority, this is really is a 
> blocker for us moving to 3.x.x
> The upgrade is just not worth taking your build from < 10 sec to > 50 sec.
> (For this particular build, it went from about ~ 7 sec to ~ 57 sec.)



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to