How to debug Maven plugin?
Solution 1
If you start your build with mvnDebug clean install
instead of mvn clean install
Maven will wait for a remote debugger to connect on port 8000
. This should work for all plugin that to not run in their own JVM.
This requires Maven greater than 2.0.8
which I assume you are running.
Solution 2
If you want to debug it from Intellij IDEA. I assume that you run bundled mvn, JDK9+
- Go to Maven Runner settings in IDEA.
- In VM Options specify this line:
-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=y
Maven will not proceed up to the moment you connect with remote debugger.
- Create Remote debugger configuration (specify port 5005).
- Run remote debugger (do not forget to add breakpoints in code).
dzieciou
Updated on June 04, 2022Comments
-
dzieciou almost 2 years
I use allure-maven plugin configured in my POM. However, when it fails with
ru.yandex.qatools.allure.data.ReportGenerationException: Could not find any allure results
I would like to debug the plugin at runtime to see if it has all variables set properly.
I have tried to use
mvnDebug
as per answers to Debugging in Maven?. I am able to connect with a debugger to JVM when Maven executes tests with surefire plugin. However, when Maven tries to generate Allure report with allure plugin I am not able to connect with a debugger. Allure plugin is defined in "reporting" section of the POM and used by the "site" Maven goal.Here's POM (almost complete, I ommited dependenies section) that I call with
mvn clean test site
command.<?xml version="1.0" encoding="UTF-8"?> <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.20</version> <configuration> <testFailureIgnore>true</testFailureIgnore> <argLine>-Xmx2048m -XX:-UseSplitVerifier -XX:MaxPermSize=256m -javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar </argLine> <properties> <property> <name>parallel</name> <value>classes</value> </property> <property> <name>threadcount</name> <value>4</value> </property> </properties> </configuration> <dependencies> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectj.version}</version> </dependency> </dependencies> </plugin> </plugins> </build> <reporting> <excludeDefaults>true</excludeDefaults> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-report-plugin</artifactId> <version>2.19.1</version> </plugin> <plugin> <groupId>io.qameta.allure</groupId> <artifactId>allure-maven</artifactId> <version>2.8</version> <configuration> </configuration> </plugin> </plugins> </reporting> <pluginRepositories> <pluginRepository> <id>mvn-nexus-all</id> <url>https://lunabuild.akamai.com/nexus/content/groups/public/</url> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </project>
And here's full stacktrace from the failing plugin:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.3:site (default-site) on project sso-config-tests: Error during page generation: Error rendering Maven report: Could not generate the report: InvocationTargetException: Could not find any allure results -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.3:site (default-site) on project sso-config-tests: Error during page generation at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286) at org.apache.maven.cli.MavenCli.main(MavenCli.java:197) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) Caused by: org.apache.maven.plugin.MojoExecutionException: Error during page generation at org.apache.maven.plugins.site.SiteMojo.execute(SiteMojo.java:143) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ... 20 more Caused by: org.apache.maven.doxia.siterenderer.RendererException: Error rendering Maven report: Could not generate the report at org.apache.maven.plugins.site.ReportDocumentRenderer.renderDocument(ReportDocumentRenderer.java:233) at org.apache.maven.doxia.siterenderer.DefaultSiteRenderer.renderModule(DefaultSiteRenderer.java:319) at org.apache.maven.doxia.siterenderer.DefaultSiteRenderer.render(DefaultSiteRenderer.java:135) at org.apache.maven.plugins.site.SiteMojo.renderLocale(SiteMojo.java:175) at org.apache.maven.plugins.site.SiteMojo.execute(SiteMojo.java:138) ... 22 more Caused by: org.apache.maven.reporting.MavenReportException: Could not generate the report at ru.yandex.qatools.allure.report.AllureGenerateMojo.executeReport(AllureGenerateMojo.java:127) at org.apache.maven.reporting.AbstractMavenReport.generate(AbstractMavenReport.java:255) at org.apache.maven.plugins.site.ReportDocumentRenderer.renderDocument(ReportDocumentRenderer.java:219) ... 26 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at ru.yandex.qatools.allure.report.AllureGenerateMojo.executeReport(AllureGenerateMojo.java:123) ... 28 more Caused by: ru.yandex.qatools.allure.data.ReportGenerationException: Could not find any allure results at ru.yandex.qatools.allure.data.AllureReportGenerator.generate(AllureReportGenerator.java:58) at ru.yandex.qatools.allure.data.AllureReportGenerator.generate(AllureReportGenerator.java:53) at ru.yandex.qatools.allure.AllureMain.main(AllureMain.java:48) ... 33 more
-
dzieciou over 6 yearsUnfortunately it did not stop at the break point in the plugin after connecting to it. Yes, I am using Maven 3.3.1
-
fhossfel over 6 yearsAre you sure you have the exact source of the plugin? I suggest you set a break point on class level.
-
dzieciou over 6 yearsI set break point on class level. The maven process fails with
JDWP exit error JVMTI_ERROR_WRONG_PHASE(112): on getting class status [util.c:1285] JDWP exit error JVMTI_ERROR_INVALID_ENVIRONMENT(116): Can't allocate jvmti memory [util.c:1799] ERROR: JDWP unable to dispose of JVMTI environment: JVMTI_ERROR_INVALID_ENVIRONMENT(116) FATAL ERROR in native method: JDWP Can't allocate jvmti memory, jvmtiError=JVMTI_ERROR_INVALID_ENVIRONMENT(116) /usr/local/bin/mvnDebug: line 41: 16470 Abort trap: 6 env MAVEN_OPTS="$MAVEN_OPTS $MAVEN_DEBUG_OPTS" $(dirname $0)/mvn "$@"
-
fhossfel over 6 yearsThat is a big in the JDK[1]. The bug report states an intention to back port that fix to > Java 8.40 but I am not sure this has ever happened. [1] bugs.openjdk.java.net/browse/JDK-6988950
-
Gerry over 2 yearsWhat do I connect to port 8000 with? What remote debugger?