A time execution recorder for Maven which log time taken by each mojo in your build lifecycle.
$M2_HOME refers to maven installation folder.
.
βββ bin
βββ boot
βββ conf
βββ lib
You can install a pre-packaged maven named maven-deluxe using brew.
It comes with maven-color, maven-notifier and maven-profiler.
It is based on latest maven release.
brew tap jcgay/jcgay
brew install maven-deluxe
Get maven-profiler and copy it in %M2_HOME%/lib/ext folder.
or
Use the core extensions configuration mechanism by creating a ${maven.multiModuleProjectDirectory}/.mvn/extensions.xml file with:
<?xml version="1.0" encoding="UTF-8"?>
<extensions>
<extension>
<groupId>fr.jcgay.maven</groupId>
<artifactId>maven-profiler</artifactId>
<version>3.2</version>
</extension>
</extensions>
Get maven-profiler and copy it in %M2_HOME%/lib/ext folder.
(with limited functionality, kept for compatibility)
Get maven-profiler and copy it in %M2_HOME%/lib/ext folder.
Use property profile when running Maven.
mvn install -Dprofile
This will generate a report in .profiler folder.
You might also add a profile name, which is included in the report and helps identify the experiment:
mvn clean install -Dprofile="No custom JVM options"
export MAVEN_OPTS='-XX:TieredStopAtLevel=1 -XX:+UseParallelGC'
mvn clean install -Dprofile="With custom JVM options=${MAVEN_OPTS}"
The extension also works when mvn is executed on multiple threads (option -T).
One can choose between HTML (by default), JSON or CONSOLE report using property profileFormat.
mvn install -Dprofile -DprofileFormat=HTML
Or you can compose multiple reporters separated by comma:
mvn install -Dprofile -DprofileFormat=JSON,HTML,CONSOLE
Also you can add the property disableTimeSorting if you want the reported times to be in the order of execution instead of sorted by execution time.
mvn install -Dprofile -DdisableTimeSorting
Report default directory (.profiler) can be customized.
You can set it as a Maven property, for example in pom.xml:
<properties>
<maven-profiler-report-directory>${project.build.directory}/custom-directory</maven-profiler-report-directory>
</properties>
or you can define it using a system property:
mvn install -Dprofile -Dmaven-profiler-report-directory=/tmp/profiler-custom-report
User parameters could leak sensitive data, you can disable reporting them using:
mvn install -Dprofile -DhideParameters=true
mvn install -Dprofile
mvn install -Dprofile -DprofileFormat=JSON
{
"name": "maven-profiler",
"profile_name": "",
"time": "44681 ms",
"goals": "clean install",
"date": "2017/01/21 19:10:04",
"parameters": "{profile=true, profileFormat=JSON}",
"projects": [
{
"project": "maven-profiler",
"time": "43378 ms",
"mojos": [
{
"mojo": "org.apache.maven.plugins:maven-invoker-plugin:2.0.0:run {execution: integration-test}",
"time": "30706 ms"
},
{
"mojo": "org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test {execution: default-test}",
"time": "7300 ms"
},
{
"mojo": "org.apache.maven.plugins:maven-shade-plugin:2.4.3:shade {execution: default}",
"time": "1378 ms"
},
{
"mojo": "org.apache.maven.plugins:maven-compiler-plugin:3.6.0:compile {execution: default-compile}",
"time": "1112 ms"
},
{
"mojo": "org.codehaus.gmavenplus:gmavenplus-plugin:1.5:testCompile {execution: default}",
"time": "1102 ms"
},
{
"mojo": "org.apache.maven.plugins:maven-invoker-plugin:2.0.0:install {execution: integration-test}",
"time": "293 ms"
},
{
"mojo": "org.apache.maven.plugins:maven-enforcer-plugin:1.4.1:enforce {execution: enforce-maven}",
"time": "225 ms"
},
{
"mojo": "org.apache.maven.plugins:maven-clean-plugin:3.0.0:clean {execution: default-clean}",
"time": "221 ms"
},
{
"mojo": "org.codehaus.plexus:plexus-component-metadata:1.7.1:generate-metadata {execution: default}",
"time": "195 ms"
},
{
"mojo": "org.apache.maven.plugins:maven-jar-plugin:3.0.2:jar {execution: default-jar}",
"time": "167 ms"
},
{
"mojo": "org.apache.maven.plugins:maven-source-plugin:3.0.1:jar-no-fork {execution: attach-sources}",
"time": "138 ms"
},
{
"mojo": "org.apache.maven.plugins:maven-resources-plugin:3.0.2:resources {execution: default-resources}",
"time": "106 ms"
},
{
"mojo": "org.apache.maven.plugins:maven-toolchains-plugin:1.1:toolchain {execution: default}",
"time": "72 ms"
},
{
"mojo": "org.apache.maven.plugins:maven-install-plugin:2.5.2:install {execution: default-install}",
"time": "46 ms"
},
{
"mojo": "org.apache.maven.plugins:maven-resources-plugin:3.0.2:testResources {execution: default-testResources}",
"time": "2 ms"
},
{
"mojo": "org.apache.maven.plugins:maven-compiler-plugin:3.6.0:testCompile {execution: default-testCompile}",
"time": "2 ms"
}
]
}
]
}
mvn install -Dprofile -DprofileFormat=CONSOLE
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β maven-profiler (21,27 s) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Run install on 2021/12/09 22:10:49 without parameters β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β maven-profiler (21,07 s) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Plugin execution β Duration β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β org.apache.maven.plugins:maven-invoker-plugin:3.2.2:run {execution: integration-test} β 9,085 s β
β org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test {execution: default-test} β 6,286 s β
β org.codehaus.gmavenplus:gmavenplus-plugin:1.12.1:compileTests {execution: default} β 2,281 s β
β org.apache.maven.plugins:maven-shade-plugin:3.2.4:shade {execution: default} β 1,264 s β
β org.apache.maven.plugins:maven-invoker-plugin:3.2.2:install {execution: integration-test} β 464,0 ms β
β org.apache.maven.plugins:maven-enforcer-plugin:1.4.1:enforce {execution: enforce-maven} β 339,5 ms β
β org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile {execution: default-compile} β 269,1 ms β
β org.codehaus.plexus:plexus-component-metadata:2.1.0:generate-metadata {execution: default} β 244,5 ms β
β org.apache.maven.plugins:maven-jar-plugin:3.2.0:jar {execution: default-jar} β 190,1 ms β
β org.apache.maven.plugins:maven-source-plugin:3.2.1:jar-no-fork {execution: attach-sources} β 132,9 ms β
β org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources {execution: default-resources} β 109,6 ms β
β org.apache.maven.plugins:maven-install-plugin:2.5.2:install {execution: default-install} β 64,26 ms β
β org.apache.maven.plugins:maven-compiler-plugin:3.8.1:testCompile {execution: default-testCompile} β 4,127 ms β
β org.apache.maven.plugins:maven-resources-plugin:3.2.0:testResources {execution: β 2,532 ms β
β default-testResources} β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ§ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
mvn -B release:prepare release:perform
