生成包含Cobertura报告的maven站点

时间:2009-02-27 21:25:55

标签: java maven-2 code-coverage cobertura

我已经有一些项目已经通过maven进行网站生成了,我想在其中集成cobertura报告,但我似乎没有运行的maven目标将为我生成一个本地预览,包括Cobertura网站上的报告。我想确保它们在我将pom更改到repo之前正确生成并且已经生成了破坏的站点。

以下是我添加到maven poms(父级和模块)的内容,但我在运行mvn site:run时看到的网站不包含cobertura报告:

<project>
...
    <build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <configuration>
                <check>
                    <haltOnFailure>false</haltOnFailure>
                    <regexes>
                        <regex>
                            <pattern>parent-package-name-here.*</pattern>
                            <branchRate>80</branchRate>
                            <lineRate>80</lineRate>
                        </regex>
                    </regexes>
                </check>
                <instrumentation>
                    <includes>
                        <include>parent-package-name-here/**/*.class</include>
                    </includes>
                </instrumentation>
            </configuration>
            <executions>
                <execution>
                    <id>clean</id>
                    <phase>pre-site</phase>
                    <goals>
                        <goal>clean</goal>
                    </goals>
                </execution>
                <execution>
                    <id>instrument</id>
                    <phase>site</phase>
                    <goals>
                        <goal>instrument</goal>
                        <goal>cobertura</goal>
                        <goal>check</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
...
<reporting>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
            </plugin>
        </plugins>
</reporting>
...
</project>

我应该使用什么maven命令来生成带有cobertura报告的网站?或者,我应该添加(另外)以使网站生成包括cobertura报告?

6 个答案:

答案 0 :(得分:3)

应该这样做:

mvn site

详细说明,运行 mvn a:b 在插件a中运行目标b。说 mvn c 意味着运行生命周期阶段c,它将运行所有阶段中的所有绑定目标,直到c。结果,这将触发更多的事情发生(例如做必要的准备以产生cobertura报告)。

答案 1 :(得分:3)

我想出了如何做到这一点。

maven网站生成插件中的链接生成似乎存在很多错误。

我发现使maven生成具有工作模块链接的站点的本地副本的唯一方法是修改distributionManagement/site标记以指向某个本地目录而不是实际部署目录,然后使用maven site:deploy

每次使用mvn site:stage的尝试都会生成断开的链接。同样适用于mvn site:run

该报告与mvn site:run / mvn site:stage的工作方式相关联,但指向模块的链接却没有。

答案 2 :(得分:1)

mvn site

应该做你想要的。您将插件配置为在生命周期的前站点和站点阶段运行,但您正在执行站点:运行目标而不是站点。我们正在用三叶草(商业覆盖工具)做类似的事情,而mvn网站就是这样做的。

答案 3 :(得分:1)

站点:舞台模块链接不能用于我的经验,无论是多模块构建还是站点:部署。试试这个:

在父pom中使用网站网址的属性,例如${site.url}。然后调用此

mvn clean site site:deploy -Dsite.url=file://`pwd`/target/site-deployed

pwd-nix命令,将替换当前目录。这是因为您使用的URL必须是绝对的。

答案 4 :(得分:0)

我们使用

mvn site-deploy

这会构建网站并对其进行部署(将其复制到我们配置的位置)。

答案 5 :(得分:0)

mvn site:site应该产生你所追求的目标,在目标目录中,将有一个包含与该目录中的index.html链接的所有报告的站点目录。