2011-02-25 66 views
18

我有一個非常慢的maven構建。我想知道是否有一種方法來配置Maven執行,以找出哪些是最耗時的步驟。如何計算執行maven的不同階段

後來我會想比較舊版本(它們更快)的版本之間的這些時間,因此它們應該是可以比較/擴散/繪製的格式。

+0

我通常會在maven日誌設置中打開相對時間戳。這不會佔用太多空間,並有助於看到緩慢的步驟。 org.slf4j.simpleLogger.showDateTime = true – eckes 2017-06-06 22:14:39

回答

1

此功能已包含在Maven3中。這裏是關聯的票證:https://issues.apache.org/jira/browse/MNG-4639

如果您需要對Maven2做同樣的事情,我建議您構建自己的插件,並將其掛接到執行的所有階段(或者只是您需要跟蹤的階段)。

+0

yup,maven2。任何指向此類插件起點的指針? – 2011-02-25 17:40:24

+0

從你的鏈接我已經看到哈德森給我的信息,它確實甚至爲Maven 2,通過檢查「執行mojos」 – 2011-02-25 17:44:32

+0

哦,很好。我認爲哈德森/詹金斯需要maven3支持才能做到這一點。 – 2011-02-25 18:06:23

0

我只是在這裏創建一個要點:https://gist.github.com/boly38/7316378

這是如何記錄的一些maven lifecycle steps日期時間樣品的例子。

當然,你可以調整這個示例來設置你自己的輸出格式(並繪製它...)。

希望這有助於


提取物:

 <profile> 
      <id>stats</id> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-antrun-plugin</artifactId> 
         <executions> 
          <execution> 
           <id>log_validate</id> 
           <phase>validate</phase> 
           <goals><goal>run</goal></goals> 
           <configuration> 
            <tasks> 
             <tstamp><format property="stepTstamp" pattern="dd-HH:mm:ss" locale="en,US" /></tstamp> 
             <echo file="stats.log" append="true" 
               message="${line.separator}${line.separator}${stepTstamp} validate${line.separator}"/> 
            </tasks> 
           </configuration> 
          </execution> 
    (...) 
          <execution> 
           <id>log_process_sources</id> 
           <phase>process-sources</phase> 
           <goals><goal>run</goal></goals> 
           <configuration> 
            <tasks> 
             <tstamp><format property="stepTstamp" pattern="dd-HH:mm:ss" locale="en,US" /></tstamp> 
             <echo file="stats.log" append="true" 
               message="${stepTstamp} process-sources${line.separator}"/> 
            </tasks> 
           </configuration> 
          </execution> 
(...) 
3

開箱即用解決方案是takari行家探查: https://github.com/takari/maven-profiler

樣本輸出從它的頁面:

org.apache.maven:maven-core:3.1.2-SNAPSHOT 

    clean 176ms 
     org.apache.maven.plugins:maven-clean-plugin:2.5 (default-clean) 176ms 

    initialize 408ms 
     org.codehaus.mojo:buildnumber-maven-plugin:1.2 (create-noncanonicalrev) 349ms 
     org.codehaus.mojo:buildnumber-maven-plugin:1.2 (create-buildnumber) 59ms 

    generate-sources 408ms 
     org.codehaus.modello:modello-maven-plugin:1.8.1 (standard) 369ms 
     org.codehaus.modello:modello-maven-plugin:1.8.1 (standard) 28ms 
     org.codehaus.modello:modello-maven-plugin:1.8.1 (standard) 11ms 

    generate-resources 933ms 
     org.apache.maven.plugins:maven-remote-resources-plugin:1.4 (default) 932ms 

    process-resources 225ms 
     org.apache.maven.plugins:maven-resources-plugin:2.6 (default-resources) 224ms 

    compile 4s 522ms 
     org.apache.maven.plugins:maven-compiler-plugin:2.5.1 (default-compile) 4s 522ms 

    process-classes 6s 880ms 
     org.codehaus.mojo:animal-sniffer-maven-plugin:1.6 (check-java-1.5-compat) 5s 814ms 
     org.codehaus.plexus:plexus-component-metadata:1.5.5 (default) 946ms 
     org.sonatype.plugins:sisu-maven-plugin:1.1 (default) 120ms 

    process-test-resources 173ms 
     org.apache.maven.plugins:maven-resources-plugin:2.6 (default-testResources) 173ms 

    test-compile 818ms 
     org.apache.maven.plugins:maven-compiler-plugin:2.5.1 (default-testCompile) 818ms 

    process-test-classes 134ms 
     org.codehaus.plexus:plexus-component-metadata:1.5.5 (default) 110ms 
     org.sonatype.plugins:sisu-maven-plugin:1.1 (default) 23ms 

    test 11s 306ms 
     org.apache.maven.plugins:maven-surefire-plugin:2.12 (default-test) 11s 306ms 

    package 1s 371ms 
     org.apache.maven.plugins:maven-jar-plugin:2.4 (default-jar) 502ms 
     org.apache.maven.plugins:maven-site-plugin:3.3 (attach-descriptor) 869ms 
+2

takari maven-profile似乎不起作用:-( – 2015-11-05 16:22:21

+0

@ShintaSmith:什麼問題? – 2015-11-05 16:49:54

+2

它只是不會產生任何性能分析輸出 – 2015-11-10 19:54:54