如何修复maven检查样式错误

How to fix the maven check style error

目前我只是尝试下载并构建 Netty 源代码。但是当我尝试 运行 源文件夹中的命令 mvn eclipse:eclipse 时。我收到一条错误消息

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.10:check (check-style) on project netty-common: Failed during checkstyle execu
tion: There are 304 checkstyle errors. -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.10:check (check-style) on proj
ect netty-common: Failed during checkstyle execution
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
        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.MojoExecutor.executeForkedExecutions(MojoExecutor.java:352)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:197)
        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:863)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
        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: Failed during checkstyle execution
        at org.apache.maven.plugin.checkstyle.CheckstyleViolationCheckMojo.execute(CheckstyleViolationCheckMojo.java:374)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
        ... 24 more
Caused by: org.apache.maven.plugin.checkstyle.CheckstyleExecutorException: There are 304 checkstyle errors.
        at org.apache.maven.plugin.checkstyle.DefaultCheckstyleExecutor.executeCheckstyle(DefaultCheckstyleExecutor.java:218)
        at org.apache.maven.plugin.checkstyle.CheckstyleViolationCheckMojo.execute(CheckstyleViolationCheckMojo.java:365)

验证代码netty-common项目时checkstyle插件出错。

我不熟悉这个插件。我想知道我是否可以通过从 pom.xml(in the ) 中删除配置来忽略它。如下所示。

<plugin>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.10</version>
        <executions>
          <execution>
            <id>check-style</id>
            <goals>
              <goal>check</goal>
            </goals>
            <phase>validate</phase>
            <configuration>
              <consoleOutput>true</consoleOutput>
              <logViolationsToConsole>true</logViolationsToConsole>
              <failsOnError>true</failsOnError>
              <failOnViolation>true</failOnViolation>
              <configLocation>io/netty/checkstyle.xml</configLocation>
              <includeTestSourceDirectory>true</includeTestSourceDirectory>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>netty-build</artifactId>
            <version>21</version>
          </dependency>
        </dependencies>
      </plugin>

有什么想法吗?谢谢

CheckStyle 是 maven 的一个模块,用于检查代码的样式,例如制表符而不是空格。 Netty 正在使用它来防止基本的格式错误。

如果您打算为 Netty 做贡献,您不应该删除插件,因为这可能意味着您的补丁永远不会应用。

如果您只是用来玩玩,您可以随意删除该插件,因为它的唯一目的是验证安装,而不是更改安装内容。

如果您选择保留它,您应该查看输出日志以查看它检测到的错误,以快速修复错误,请参阅this answer by Matthew Farwell

  1. Right click on the java file in Package Explorer or whatever, and select 'Apply Checkstyle Corrections'.
  2. Click on the error in the problems view, and select 'Quick fix'. This corrects the problem.

使用

跳过检查样式执行
-Dcheckstyle.skip

mvn [YOUR_COMMAND] -Dcheckstyle.skip

如果您刚刚克隆了存储库并且构建失败,我相信您正在使用 Windows 并且您的 Git 配置有问题。请将 'core.autocrlf' 选项设置为 'true',重新克隆存储库,然后重试。

git config --global core.autocrlf true

虽然我既不熟悉 Netty 也不熟悉 maven eclipse 插件,但在构建 pwm 项目时我确实遇到了 maven-checkstyle-plugin 的问题。

这是错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check (validate) on project pwm: Failed during checkstyle configuration ....

我的解决方案(顺便说一句,它也解决了许多与 Maven 相关的错误):

删除maven的.m2文件夹,然后重新构建项目。 在 linux 系统上,.m2 文件夹通常位于您的主文件夹中 /home/<username>/.m2

在我的例子中,我只是尝试执行相同的目标,但使用 -X 选项(启用调试级别)并发现 class 检查样式插件抱怨的是什么。更正样式并再次 运行 maven -> 构建成功。

解决此问题的最佳方法是 运行 带 -X 选项的 mvn 安装,它将为您提供有关 class 中样式问题的详细信息。您可以相应地修复 class。

我通过删除 pom.xml 中的检查样式配置并重建 maven 解决了这个问题。当我后来重新插入和构建时,它没有错误地工作。

在 Linux OS 我使用 dos2unix.

解决了
cd presto;
find . -type f -exec dos2unix {} \;

我遇到了同样的问题,我通过在我的 pom 文件中添加以下内容来禁用 pom 的 checkstyle,它对我有用。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <executions>
        <execution>
            <id>checkstyle-validation</id>
            <phase>none</phase>
        </execution>
    </executions>
</plugin>

只需执行“mvn spotless:apply”,对我有用