Java 生成包含Cobertura报告的maven站点

Java 生成包含Cobertura报告的maven站点,java,maven-2,code-coverage,cobertura,Java,Maven 2,Code Coverage,Cobertura,我有一些项目已经在通过maven进行站点生成,我想在其中集成cobertura报告,但我运行的maven目标似乎不会生成本地预览,让我查看,其中包括站点中的cobertura报告。在我将pom更改提交到回购协议并生成断开的站点之前,我想确保它们生成的是正确的 下面是我添加到maven poms(父级和模块)中的内容,但是当我运行mvn site:run时看到的站点不包括cobertura报告: <project> ... <build> <plugi

我有一些项目已经在通过maven进行站点生成,我想在其中集成cobertura报告,但我运行的maven目标似乎不会生成本地预览,让我查看,其中包括站点中的cobertura报告。在我将pom更改提交到回购协议并生成断开的站点之前,我想确保它们生成的是正确的

下面是我添加到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>

...
org.codehaus.mojo
cobertura maven插件
假的
父包名称在这里*
80
80
此处为父包名称/***.class
清洁的
现场前
清洁的
仪器
网站
仪器
科贝图拉
检查
...
org.codehaus.mojo
cobertura maven插件
...
我应该使用什么maven命令生成带有cobertura报告的站点?或者,为了让站点生成包含cobertura报告,我应该(另外)添加什么

mvn site-deploy
这将构建站点并部署它(将其复制到我们已配置的位置)

你应该做你想做的事。您将插件配置为在生命周期的站点前阶段和站点阶段运行,但随后您将执行站点:运行目标不是站点。我们正在用clover(商业覆盖工具)做类似的事情,mvn网站也做到了这一点。

应该做到:

mvn site

更详细地说,运行mvn a:b运行插件a中的目标b。说mvn cmvn c意味着运行生命周期阶段c,它在c之前的所有阶段中运行所有绑定目标。因此,这将引发更多的事情发生(比如做必要的准备以生成cobertura报告)

mvn站点:站点
应该生成您想要的内容,在目标目录中,将有一个站点目录,其中包含与该目录中的
index.html
链接的所有报告。

我想出了方法

maven站点生成插件中的链接生成似乎有很多bug

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

每次尝试使用
mvn站点:stage
都会生成断开的链接。
mvn站点也是如此:运行


报告链接与
mvn site:run
/
mvn site:stage
一起工作,但模块链接不起作用。

根据我的经验,site:stage模块链接也不适用于多模块构建,但site:deploy起作用。试试这个:

在父pom中为站点URL使用属性,例如
${site.URL}
。那就叫这个吧

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

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

但我不想将其部署到其“生产”位置,我希望先进行本地预览,因为这仍然是实验性的。您应该将其作为bug提交到maven的bug tracker中,否则将无法处理。
mvn clean site site:deploy -Dsite.url=file://`pwd`/target/site-deployed