You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Baptiste MATHUS (JIRA)" <ji...@codehaus.org> on 2010/04/22 10:38:20 UTC

[jira] Created: (MNG-4639) Be able to profile a maven build

Be able to profile a maven build
--------------------------------

                 Key: MNG-4639
                 URL: http://jira.codehaus.org/browse/MNG-4639
             Project: Maven 2 & 3
          Issue Type: New Feature
            Reporter: Baptiste MATHUS


A common problem with builds is that they can become quite long to run. As it is a know anti-pattern for CI for example, one has the need to try and optimize their builds.

The thing is: the current granularity isn't sufficiently precise. In fact, you only only the time spent to build each module. This is a good start, though.

Maven currently displays something like the following (let's speak only about maven 3):
{quote}
[INFO] Reactor Summary:
[INFO] ------------------------------------------------------------------------
[INFO] p1 ........................ SUCCESS [1:12.938s]
[INFO] p2 ........................ SUCCESS [5.750s]
[INFO] p3 ........................ SUCCESS [3:58.488s]
[INFO] p4 ........................ SUCCESS [24.437s]
[INFO] p5 ........................ SUCCESS [1.563s]
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5 minutes 46 seconds
{quote}

What would be great would be adding an option that would higher the details. Something like -A/--analyze (--profile would be too close to -P/profile option) would add detailed analysis, would print something like. 
{quote}
[INFO] Reactor Summary:
[INFO] ------------------------------------------------------------------------
[INFO] p1 ........................ SUCCESS [1:12.938s]
        clean:clean (somepkg.CleanMojo) : 10.3s
        compiler:compile (...) : 50s
        ...
        and so on
{quote}

I'm not very well aware the level of details maven 3 API could provide. So the printing above could become irrelevant. In this case, printing a dedicated html or so report might be a better choice.

Cheers
PS : Though I'm really not introduced into maven code, if you think it's not too complicated, I could try and contribute on this field if I'm given some hints or good starting points. 

-- 
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

        

[jira] Commented: (MNG-4639) Be able to profile a maven build

Posted by "Jerome Lacoste (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MNG-4639?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=253165#action_253165 ] 

Jerome Lacoste commented on MNG-4639:
-------------------------------------

For those who are interested in this feature:

* hudson already does this for you (at least in the maven3 support). the time for the mojos is stored in the build.xml (Search for ExecutedMojo). There's also a per module page summary on hudson that will display time used per mojo
* you can implement the same in maven by looking at 
  http://maven.apache.org/ref/3.0.2/maven-core/apidocs/org/apache/maven/execution/AbstractExecutionListener.html. This is used in  and ./maven-embedder/src/main/java/org/apache/maven/cli/ExecutionEventLogger.java and instantiated by maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
  You might for example want to add a new 'profiling' option. Not to confuse with maven profiles..
* if you are interested by the downloads time, you might want to look at ./maven-embedder/src/main/java/org/apache/maven/cli/AbstractMavenTransferListener.java
  but as downloads might happen in parallel, I am not sure you will get the information you want (i.e. user time spent waiting for download to complete)

Hope that helps.

> Be able to profile a maven build
> --------------------------------
>
>                 Key: MNG-4639
>                 URL: http://jira.codehaus.org/browse/MNG-4639
>             Project: Maven 2 & 3
>          Issue Type: New Feature
>            Reporter: Baptiste MATHUS
>             Fix For: Issues to be reviewed for 3.x
>
>
> A common problem with builds is that they can become quite long to run. As it is a know anti-pattern for CI for example, one has the need to try and optimize their builds.
> The thing is: the current granularity isn't sufficiently precise. In fact, you only only the time spent to build each module. This is a good start, though.
> Maven currently displays something like the following (let's speak only about maven 3):
> {quote}
> [INFO] Reactor Summary:
> [INFO] ------------------------------------------------------------------------
> [INFO] p1 ........................ SUCCESS [1:12.938s]
> [INFO] p2 ........................ SUCCESS [5.750s]
> [INFO] p3 ........................ SUCCESS [3:58.488s]
> [INFO] p4 ........................ SUCCESS [24.437s]
> [INFO] p5 ........................ SUCCESS [1.563s]
> [INFO] ------------------------------------------------------------------------
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD SUCCESSFUL
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 5 minutes 46 seconds
> {quote}
> What would be great would be adding an option that would higher the details. Something like -A/--analyze (--profile would be too close to -P/profile option) would add detailed analysis, would print something like. 
> {quote}
> [INFO] Reactor Summary:
> [INFO] ------------------------------------------------------------------------
> [INFO] p1 ........................ SUCCESS [1:12.938s]
>         clean:clean (somepkg.CleanMojo) : 10.3s
>         compiler:compile (...) : 50s
>         ...
>         and so on
> {quote}
> I'm not very well aware the level of details maven 3 API could provide. So the printing above could become irrelevant. In this case, printing a dedicated html or so report might be a better choice.
> Cheers
> PS : Though I'm really not introduced into maven code, if you think it's not too complicated, I could try and contribute on this field if I'm given some hints or good starting points. 

-- 
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