您好我是一名Java Web应用程序开发人员
我遇到了问题,我想在运行期间为我的网络应用程序收集三叶草数据。
我确实通过向tomcat添加参数(-Dclover.initstring.basedir =“[PATH TO CLOVER DB]”)为单个应用程序设置了这样做。
工作正常。
但问题是我们有多个应用程序,我想在运行时检查它们的数据覆盖范围。
所以我试图通过引用合并的DB文件来做同样的事情。它不起作用 - 合并的db文件在运行时不会更新。
你知道为什么或者我应该怎么做的想法?
谢谢
答案 0 :(得分:4)
你有一些误解:
首先,clover db文件永远不会在运行时更新 - 只在构建时更新。覆盖率数据记录在.db文件旁边的单独文件中。 .db文件记录项目源的结构以及正在运行的检测应用程序所需的一些其他数据。
其次,合并数据库的唯一原因是(紧接其后)对其执行报告。合并.db后,无法为其收集任何覆盖范围。在仪表化应用程序运行之前或期间合并是不合适的。只适用于。
这是你应该做的:
对于每个项目(对应于webapp),添加一个唯一标识webapp的显式initstring。例如对于webapp Foo有一个foo.db的initstring,对于webapp Bar有一个bar.db的initstring等
在项目Foo的build.xml中:
<clover-setup initstring="foo.db"/>
在项目栏的build.xml中:
<clover-setup initstring="bar.db"/>
现在您的webapps'.db文件名将是唯一的,因此当您添加-Dclover.inistring.basedir = / path / to / folder / containg / / db / files /时,每个webapp都不会在另一个上进行践踏。
所以在运行你的webapp后,在/ path / to / folder / containg / / db / files /你会看到类似这样的东西:
foo.db
foo.db9bl74u_g1e05ktv
foo.db9bl74u_g1e05ktv.1
bar.db
bar.db3wl21k_g1fbp9pb
bar.db3wl21k_g1fbp9pb.1
一旦您测试了您的网络应用程序,您就可以报告它们。这是可能想要合并的时候。如果您希望为所有Web应用程序生成单个覆盖率报告,则可以合并。通常没有其他理由合并。
BTW:你可能会在forums.atlassian.com上得到更快的答案。