apache / apache/maven-changes-plugin

Improve error message when using 3.x with 1.x changes.xml file

Open
#633 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Java
Stars
15
Forks
22
Avg merge
8h 1m
Merged PRs (30d)
3

Description

### New feature, improvement proposal

I received the following confusing error message when using my old changes file (sticking to https://maven.apache.org/xsd/changes-1.0.0.xsd)

```
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.21.0:site (default-site) on project ...: Failed to render site: Error generating maven-changes-plugin:3.0.0-M3:changes-report report: An error occurred when parsing the changes.xml file: TEXT must be immediately followed by END_TAG and not START_TAG (position: START_TAG seen ... Deleted the erroneous code.\n ... @38:36) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.21.0:site (default-site) on project different-doxia-versions: Failed to render site

...
Caused by: org.apache.maven.plugins.changes.ChangesXMLRuntimeException: An error occurred when parsing the changes.xml file
at org.apache.maven.plugins.changes.ChangesXML. (ChangesXML.java:100)
at org.apache.maven.plugins.changes.ChangesReport.getChangesFromFile (ChangesReport.java:372)
at org.apache.maven.plugins.changes.ChangesReport.executeReport (ChangesReport.java:216)
at org.apache.maven.reporting.AbstractMavenReport.generate (AbstractMavenReport.java:358)
at org.apache.maven.plugins.site.render.ReportDocumentRenderer.renderDocument (ReportDocumentRenderer.java:199)
at org.apache.maven.doxia.siterenderer.DefaultSiteRenderer.render (DefaultSiteRenderer.java:302)
at org.apache.maven.plugins.site.render.SiteMojo.renderNonDoxiaDocuments (SiteMojo.java:282)
at org.apache.maven.plugins.site.render.SiteMojo.renderLocale (SiteMojo.java:147)
at org.apache.maven.plugins.site.render.SiteMojo.execute (SiteMojo.java:112)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:919)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:285)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:207)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)
Caused by: org.codehaus.plexus.util.xml.pull.XmlPullParserException: TEXT must be immediately followed by END_TAG and not START_TAG (position: START_TAG seen ... Deleted the erroneous code.\n ... @38:36)
at org.codehaus.plexus.util.xml.pull.MXParser.nextText (MXParser.java:1108)
at org.apache.maven.plugins.changes.model.io.xpp3.ChangesXpp3Reader.parseAction (ChangesXpp3Reader.java:747)
at org.apache.maven.plugins.changes.model.io.xpp3.ChangesXpp3Reader.parseRelease (ChangesXpp3Reader.java:1098)
at org.apache.maven.plugins.changes.model.io.xpp3.ChangesXpp3Reader.parseBody (ChangesXpp3Reader.java:827)
at org.apache.maven.plugins.changes.model.io.xpp3.ChangesXpp3Reader.parseChangesDocument (ChangesXpp3Reader.java:880)
at org.apache.maven.plugins.changes.model.io.xpp3.ChangesXpp3Reader.read (ChangesXpp3Reader.java:606)
at org.apache.maven.plugins.changes.model.io.xpp3.ChangesXpp3Reader.read (ChangesXpp3Reader.java:637)
at org.apache.maven.plugins.changes.model.io.xpp3.ChangesXpp3Reader.read (ChangesXpp3Reader.java:668)
at org.apache.maven.plugins.changes.ChangesXML. (ChangesXML.java:74)
```

It would be nice to have a more explicit error message which derives from the referenced namespace that the issue is caused by a non supported Changes file version.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start in ChangesXML.java and follow the parsing path through ChangesXpp3Reader.parseAction, using the reported 1.x changes.xml example as a reproduction. Check how the referenced namespace is read and how parse failures are wrapped. Done means an unsupported Changes file version produces an explicit, version-related error instead of the generic XML parser message.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.