apache / apache/maven-checkstyle-plugin

Implement plexus-build-api

Open
#675 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Java
Stars
97
Forks
67
Avg merge
14h 50m
Merged PRs (30d)
6

Description

### New feature, improvement proposal

Implementing https://github.com/codehaus-plexus/plexus-build-api helps with IDE integrations like m2e. That way errors are directly emitted at the right context (i.e. file and line where the violation happened) in Eclipse with m2e. For regular CLI invocations nothing changes.

Currently Eclipse just emits a generic error like

```
Failed to execute mojo org.apache.maven.plugins:maven-checkstyle-plugin:3.6.0:check {execution: checkstyle-check} (org.apache.maven.plugins:maven-checkstyle-plugin:3.6.0:check:checkstyle-check:process-sources)

org.eclipse.core.runtime.CoreException: Failed to execute mojo org.apache.maven.plugins:maven-checkstyle-plugin:3.6.0:check {execution: checkstyle-check}
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeMojo(MavenExecutionContext.java:408)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.lambda$2(MavenExecutionContext.java:358)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:462)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:342)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:357)
at org.eclipse.m2e.core.project.configurator.MojoExecutionBuildParticipant.build(MojoExecutionBuildParticipant.java:57)
at org.eclipse.m2e.core.internal.builder.MavenBuilderImpl.lambda$2(MavenBuilderImpl.java:159)
at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:987)
at org.eclipse.m2e.core.internal.builder.MavenBuilderImpl.build(MavenBuilderImpl.java:139)
at org.eclipse.m2e.core.internal.builder.MavenBuilder$1.method(MavenBuilder.java:164)
at org.eclipse.m2e.core.internal.builder.MavenBuilder$1.method(MavenBuilder.java:1)
at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.lambda$1(MavenBuilder.java:109)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:462)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:295)
at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.lambda$0(MavenBuilder.java:100)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:462)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:342)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:281)
at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.execute(MavenBuilder.java:83)
at org.eclipse.m2e.core.internal.builder.MavenBuilder.build(MavenBuilder.java:192)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:1109)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:299)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:355)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:449)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:452)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:564)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:512)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:594)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:208)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:309)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: org.apache.maven.plugin.MojoFailureException: You have 1 Checkstyle violation.
at org.apache.maven.plugins.checkstyle.CheckstyleViolationCheckMojo.execute(CheckstyleViolationCheckMojo.java:595)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:126)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeMojo(MavenExecutionContext.java:406)
... 32 more
```

This does not even reveal the location of the Checkstyle violation as the actual error is logged before (not part of the MojoFailureException in https://github.com/apache/maven-checkstyle-plugin/blob/dd1abd9ee7cb1046ece3ae013fa6e68a345c7a32/src/main/java/org/apache/maven/plugins/checkstyle/CheckstyleViolationCheckMojo.java#L595).

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with CheckstyleViolationCheckMojo.java around line 595 and review the proposed plexus-build-api linked in the issue. Trace how the Checkstyle violation is currently emitted before MojoFailureException. Done means m2e can report the violation at its file and line context while regular CLI invocations remain unchanged.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.