我使用 maven 和 -T 选项构建我的项目。有时,构建因随机 checkstyle 错误而失败。
是否可以为特定插件( checkstyle )禁用 -T 选项并并行阻止执行此插件?
以防附加stacktraces:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.16:check (validate) on project yyy-1: Execution validate of goal org.apache.maven.plugins:maven-checkstyle-plugin:2.16:check failed. NullPointerException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.16:check (validate) on project yyy-1: Execution validate of goal org.apache.maven.plugins:maven-checkstyle-plugin:2.16:check failed.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:224)
...
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call(MultiThreadedBuilder.java:185)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
...
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution validate of goal org.apache.maven.plugins:maven-checkstyle-plugin:2.16:check failed.
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 11 more
Caused by: java.lang.NullPointerException
at com.puppycrawl.tools.checkstyle.checks.javadoc.AbstractJavadocCheck.visitToken(AbstractJavadocCheck.java:182)
...
at com.puppycrawl.tools.checkstyle.Checker.process(Checker.java:265)
at org.apache.maven.plugin.checkstyle.exec.DefaultCheckstyleExecutor.executeCheckstyle(DefaultCheckstyleExecutor.java:252)
at org.apache.maven.plugin.checkstyle.CheckstyleViolationCheckMojo.execute(CheckstyleViolationCheckMojo.java:538)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
... 12 more
或
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.16:check (validate) on project xxx-2: You have 1 Checkstyle violation. -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.16:check (validate) on project xxx-2: You have 1 Checkstyle violation.
...
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call(MultiThreadedBuilder.java:185)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
...
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.maven.plugin.MojoFailureException: You have 1 Checkstyle violation.
at org.apache.maven.plugin.checkstyle.CheckstyleViolationCheckMojo.execute(CheckstyleViolationCheckMojo.java:588)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 11 more
答案 0 :(得分:1)
Checkstyle版本6.11甚至没有简单的线程安全性。 Javadoc检查使用在单个JVM中的Checkstyle的所有执行中共享的静态缓存。
从版本6.11起,我已经用线程本地缓存替换了静态缓存,这同样快,但提供了基本的线程安全性。可以在Maven和Checkstyle中使用 -T 选项。