我有一個非常慢的maven構建。我想知道是否有一種方法來配置Maven執行,以找出哪些是最耗時的步驟。如何計算執行maven的不同階段
後來我會想比較舊版本(它們更快)的版本之間的這些時間,因此它們應該是可以比較/擴散/繪製的格式。
我有一個非常慢的maven構建。我想知道是否有一種方法來配置Maven執行,以找出哪些是最耗時的步驟。如何計算執行maven的不同階段
後來我會想比較舊版本(它們更快)的版本之間的這些時間,因此它們應該是可以比較/擴散/繪製的格式。
此功能已包含在Maven3中。這裏是關聯的票證:https://issues.apache.org/jira/browse/MNG-4639
如果您需要對Maven2做同樣的事情,我建議您構建自己的插件,並將其掛接到執行的所有階段(或者只是您需要跟蹤的階段)。
yup,maven2。任何指向此類插件起點的指針? – 2011-02-25 17:40:24
從你的鏈接我已經看到哈德森給我的信息,它確實甚至爲Maven 2,通過檢查「執行mojos」 – 2011-02-25 17:44:32
哦,很好。我認爲哈德森/詹金斯需要maven3支持才能做到這一點。 – 2011-02-25 18:06:23
我只是在這裏創建一個要點: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>
(...)
開箱即用解決方案是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
takari maven-profile似乎不起作用:-( – 2015-11-05 16:22:21
@ShintaSmith:什麼問題? – 2015-11-05 16:49:54
它只是不會產生任何性能分析輸出 – 2015-11-10 19:54:54
https://github.com/jcgay/maven-profiler是一個類似的方便的工具。這很容易設置和使用。 (在覈心Maven中有類似它或EventSpy takari/maven-profiler的選項肯定會很整潔;評論https://issues.apache.org/jira/browse/MNG-4639 ..)
該分析器在多模塊構建方面存在問題,並且不支持'-T ' - 在github上查看問題 – 2016-12-07 18:19:10
我通常會在maven日誌設置中打開相對時間戳。這不會佔用太多空間,並有助於看到緩慢的步驟。 org.slf4j.simpleLogger.showDateTime = true – eckes 2017-06-06 22:14:39