禁用Maven中特定插件的并行构建

时间:2015-09-24 20:02:59

标签: maven maven-3 maven-plugin checkstyle

我使用 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

1 个答案:

答案 0 :(得分:1)

Checkstyle版本6.11甚至没有简单的线程安全性。 Javadoc检查使用在单个JVM中的Checkstyle的所有执行中共享的静态缓存。

从版本6.11起,我已经用线程本地缓存替换了静态缓存,这同样快,但提供了基本的线程安全性。可以在Maven和Checkstyle中使用 -T 选项。