Maven-FindBugs插件-从测试阶段排除

Maven-FindBugs插件-从测试阶段排除,maven,findbugs,pom.xml,Maven,Findbugs,Pom.xml,在我的maven设置中,findbugs插件运行良好。我已经将findbugs设置为在编译阶段执行。然而,我注意到它也在测试阶段运行,因为测试阶段也调用compile。因为我有一个运行所有目标的自动构建管道,所以我不需要在测试阶段运行findbugs。我试图用以下方法将findbugs排除在测试阶段之外,但还没有成功 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>

在我的maven设置中,findbugs插件运行良好。我已经将findbugs设置为在编译阶段执行。然而,我注意到它也在测试阶段运行,因为测试阶段也调用compile。因为我有一个运行所有目标的自动构建管道,所以我不需要在测试阶段运行findbugs。我试图用以下方法将findbugs排除在测试阶段之外,但还没有成功

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>findbugs-maven-plugin</artifactId>
    <version>2.4.0</version>
    <inherited>true</inherited>
    <configuration>
        <failOnError>${findbugs.failOnError}</failOnError>
        <skip>${findbugs.skip}</skip>
        <trace>${findbugs.trace}</trace>
    </configuration>
    <executions>
        <execution>
            <phase>compile</phase>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
        <execution>
            <id>findbugs-test-compile</id>
            <phase>test</phase>
            <goals>
                <goal>check</goal>
            </goals>
            <configuration>
                <skip>true</skip>
            </configuration>
        </execution>
    </executions>
</plugin>

org.codehaus.mojo
findbugs maven插件
2.4.0
真的
${findbugs.failOnError}
${findbugs.skip}
${findbugs.trace}
编译
检查
findbugs测试编译
测试
检查
真的

根据生命周期的运行情况,不会通过编译调用它。它只是在运行,因为您配置了两次执行,一次在测试阶段,一次在编译阶段。Findbugs通常应在报告区域(站点)运行。 只需执行一次:

  <executions>
        <execution>
            <id>findbugs-test-compile</id>
            <phase>test</phase>
            <goals>
                <goal>check</goal>
            </goals>
            <configuration>
                <skip>true</skip>
            </configuration>
        </execution>
    </executions>

findbugs测试编译
测试
检查
真的
你喜欢的那个。但我建议阅读原因,它应该运行在报告区(通过网站)只

更新:

如果您只想在站点生成期间运行findbugs,而不只是将其从通常的构建区域中删除并放到报告区域中

它不会通过compile调用,因为它只是在运行,因为您配置了两次执行,一次在测试阶段,一次在编译阶段。Findbugs通常应在报告区域(站点)运行。 只需执行一次:

  <executions>
        <execution>
            <id>findbugs-test-compile</id>
            <phase>test</phase>
            <goals>
                <goal>check</goal>
            </goals>
            <configuration>
                <skip>true</skip>
            </configuration>
        </execution>
    </executions>

findbugs测试编译
测试
检查
真的
你喜欢的那个。但我建议阅读原因,它应该运行在报告区(通过网站)只

更新:

如果您只想在站点生成期间运行findbugs,而不只是将其从通常的构建区域中删除并放到报告区域中

我在第二部分的测试阶段遇到了findbugs运行的问题。我添加了第二个,以便将其设置为测试阶段。换句话说,如果我删除了第二个,其中包含测试阶段,那么如果我发布mvn测试,findbugs仍将运行。问题是,为什么要在编译周期中运行findbugs?通常的用例是在站点生成期间运行它。简单的问题是:您想什么时候运行findbugs?感谢您花时间讨论这个问题。我想在编译期间运行它,这样如果发现新的bug,构建可能会失败。站点生成不是正常设置的一部分。我只生成网站,如果一切建设和通过所有测试正确。请注意,我的工作不是一个“站点”,而是一个后端服务器,因此在我的案例中,站点被严格用于生成项目信息和报告。基于此,我认为您应该使用编译后的“流程类”阶段。我在第二部分的测试阶段遇到了findbugs运行的问题。我添加了第二个,以便将其设置为测试阶段。换句话说,如果我删除了第二个,其中包含测试阶段,那么如果我发布mvn测试,findbugs仍将运行。问题是,为什么要在编译周期中运行findbugs?通常的用例是在站点生成期间运行它。简单的问题是:您想什么时候运行findbugs?感谢您花时间讨论这个问题。我想在编译期间运行它,这样如果发现新的bug,构建可能会失败。站点生成不是正常设置的一部分。我只生成网站,如果一切建设和通过所有测试正确。请注意,我的工作不是一个“站点”,而是一个后端服务器,因此在我的案例中,站点被严格用于生成项目信息和报告。基于此,我认为您应该使用“流程类”阶段,如果在编译之后使用。