我有一个多模块maven项目。我使用intellij-idea作为我的IDE。 我让Maven配置了clover插件来自动检测构建。 如何让IntelliJ识别这些更改并刷新其覆盖率数据。(注意:必须单击"刷新覆盖率"工具栏按钮没问题。)
我尝试过如下配置 maven-clover2-plugin :
<plugin>
<groupId>com.atlassian.maven.plugins</groupId>
<artifactId>maven-clover2-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<baseDir>${project.basedir}</baseDir>
<cloverMergeDatabase>
${project.basedir}.clover\cloverMerge.db
</cloverMergeDatabase>
</configuration>
<executions>
<execution>
<id>main</id>
<phase>package</phase>
<goals>
<goal>instrument</goal>
<goal>aggregate</goal>
<goal>check</goal>
</goals>
</execution>
<execution>
<id>site</id>
<phase>pre-site</phase>
<goals>
<goal>instrument</goal>
<goal>aggregate</goal>
<goal>check</goal>
</goals>
</execution>
<execution>
<id>clean</id>
<phase>clean</phase>
<goals><goal>clean</goal></goals>
</execution>
</executions>
</plugin>
然后我将项目设置配置为使用:
.clover\cloverMerge.db
并检查相对于项目目录。复选框。
但那不起作用。
注意:
它位于Configuring Instrumentation的底部
如果您有多模块项目,请不要明确设置这些位置。
所以我也尝试将该位置作为Maven和IDEA的默认位置,但这也没有用。
同样在Clover for IDEA installation GUIDE - Known Issues
如果您使用的是Maven构建工具,则应避免使用相同的&gt;像Maven那样的IntelliJ输出目录。由于Maven使用
target/classes
和target/test-classes
目录, 避免指定这些。 IntelliJ的clover.db
位置也应与Maven使用的位置不同。
为什么它们应该是不同的是否有一些文件损坏问题?如果它们保持不同,那么 HOW 可以获得强大的覆盖突出显示/ etc,而不必在完全独立的过程中重复构建吗?
答案 0 :(得分:2)
好吧,我终于想出了答案。我把它留给了后人。
解决方案很复杂,有点像Hack,但 WORKS 。
更新父项目 pom.xml 文件
<cloverDatabase>${project.basedir}.clover\clover.db</cloverDatabase>
<cloverMergeDatabase>
${project.basedir}.clover\cloverMerge.db
</cloverMergeDatabase>
创建要在 IntelliJ IDEA
中运行的单元测试clean clover2:setup prepare-package -DSkipTests
clover2:aggregrate
答案 1 :(得分:0)
在配置工具的底部,它说 如果您有多模块项目,请不要显式设置这些位置。
文档实际上说:如果您有一个多模块项目,请不要明确设置这些位置(使用绝对路径)。原因很简单 - 如果您使用的话绝对路径,那么每个模块都没有单独的clover.db,只有一个clover.db文件。
&#34;如果您使用的是Maven构建工具,则应避免使用与Maven相同的IntelliJ输出目录。由于Maven使用目标/类和目标/测试类目录,因此请避免指定这些目录/#34; [...]为什么它们应该是不同的是存在一些文件损坏问题?
问题如下:IntelliJ IDEA使用它自己的引擎来编译源代码。这意味着它不必调用原始项目的构建系统(例如Maven)来编译源代码。
这意味着: - 如果你有一个基于Maven的项目,它安装了Clover-for-Maven插件 - 同时在IntelliJ IDE中安装了Clover-for-IDEA - 这两个Clover集成对类和数据库使用相同的输出文件夹
...然后这两个Clover集成可能会开始覆盖他们的文件。
在大多数情况下,这不是一个理想的行为,因为IDEA中的任何源代码修改/项目重建动作等都会触发源重新编译;这可以删除以前由Clover-for-Maven获得的结果。