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 new 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>2.6</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.
This also works when mvn
is executed on multiple threads (option -T
).
One can choose between HTML
(by default) or JSON
report using property profileFormat
.
mvn install -Dprofile -DprofileFormat=HTML
Or you can compose multiple reporters separated by comma:
mvn install -Dprofile -DprofileFormat=JSON,HTML
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
mvn install -Dprofile
mvn install -Dprofile -DprofileFormat=JSON
{
"name": "maven-profiler",
"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 -B release:prepare release:perform