本周早些时候,我很难恢复Clover在运行时更改的项目属性(这样它就不会干扰后续的插件):
How to revert Maven project.build variables after Clover plugin finishes?
我通过在Maven启动时保存这些属性来解决这个问题,并在插件中使用保存的变量,而不是使用那些由Clover修改的变量。
既然我能够在集成前测试阶段托管非仪器化的WAR文件,那么我的测试就能够成功地运行并通过(以前,我无法从被检测的WAR文件中运行该应用程序,因为Clover不在发布类路径上)。
不幸的是,我发现分叉的三叶草生命周期在测试阶段之后还在继续。在我的测试通过之后,嵌入式Tomcat实例关闭了最初的生命周期,再次运行Tomcat7插件,启动服务器,然后重新运行测试。
我可以忍受它运行我的单元测试两次(这可以捕获边缘案例错误,它只出现在或不使用Clover工具),但是运行两次集成测试是完全没有必要的。这些测试不涉及生产代码(他们在浏览器中使用Selenium来自动化UI测试)。如前所述,工具化的WAR文件无论如何都无法工作,所以即使在运行集成测试时,它也不再存在。绝对没有理由需要再次运行这些测试。
在测试阶段完成后,我如何告诉Clover终止分叉生命周期,从而使集成测试只运行一次?我目前只能在整个生命周期内启用它,或者根本不启用它。
更新:--我发现,即使我通过传入-Dmaven.clover.skip=true禁用-Dmaven.clover.skip=true插件,它仍然会分叉整个生命周期。我找到的唯一防止这种情况的方法是完全注释掉Clover,这样它就没有机会在跳过插装之前分叉整个生命周期。
发布于 2014-10-07 20:21:17
克洛弗有三个目标,可用于代码插装:
clover2:instrument将并行构建生命周期划分为“安装”阶段--这也是为什么您看到您的构建和测试运行了两次的原因--一次用于标准构建,一次用于使用Clover的构建。三叶草2:仪器还产生两组工件--普通工件(例如myapp-1.0.jar)和“三叶草”工件(例如myapp-1.0-clover.jar)。
还有一个类似的目标叫做clover2:instrument-test --它也会分叉一个构建,但是直到“测试”阶段。如果您不想运行集成测试,或者希望避免在本地Maven缓存中安装工件,这可能很有用。
如果您不喜欢这种行为,可以使用diver2:安装目标。它将在Maven的默认构建生命周期中执行源代码检测。这意味着构建和测试都只执行一次。使用clover2时,您必须记住的唯一一点是:安装程序是生成的工件(JAR、WAR)将包含仪器化的类,因此最有可能的情况是,您不应将'mvn install‘或'mvn部署’与‘order 2: not’一起调用--以避免将“正向化”的罐推到存储库中:
如果您正在CI上运行您的测试,我建议配置一个单独的构建计划,其中包含‘trver2:setup’。如果您有任何问题,可以在support.atlassian.com联系我。
https://stackoverflow.com/questions/26026192
复制相似问题