为什么sbt-scoverage报告java.lang.RuntimeException:JavaScript文件的重复映射?

时间:2014-07-23 15:12:04

标签: playframework sbt scoverage

我正在使用sbt-scoverage插件来编写用Play Framework编写的项目。

我遇到以下java.lang.RuntimeException: Duplicate mappings错误:

[scoverage]: Instrumentation completed [35097 statements]
[scoverage]: Written instrumentation file [/Users/project/target/scala-2.10/scoverage-data/scoverage.coverage.xml]
[scoverage]: Writing measurements data to [/Users/project/target/scala-2.10/scoverage-data]
...
[info] Compiling 49 Scala sources to /Users/project/target/scala-2.10/test-classes...
java.lang.RuntimeException: Duplicate mappings:
/Users/project/target/scala-2.10/scoverage-classes/services-main.js
from
/Users/project/target/scala-2.10/resource_managed/main/public/javascripts/global/services/services-main.js
/Users/project/target/scala-2.10/resource_managed/main/public/javascripts/kiosk/global/services/services-main.js
/Users/project/target/scala-2.10/scoverage-classes/global.min.css
from......

我的猜测是,它正试图从service-main.js target下的scoverage-classes转移ScoverageKeys.excludedPackages in ScoverageCompile := ".views.;.javascripts.;.assets.;.js.;.resource_managed." 。我不打算对任何JavaScript文件运行scoverage所以我包括以下设置:

{{1}}

它什么都没改变 - 错误仍然存​​在。如何指示scoverage忽略JavaScript文件?

2 个答案:

答案 0 :(得分:0)

这只是猜测,但值得继续检查是否能解决问题。

根据Exclude classes and packages

  

您可以排除考虑进行覆盖率测量的类别   通过提供以分号分隔的正则表达式列表。

     

正则表达式与完全限定的类匹配   name,并且必须匹配整个字符串才能生效。

     

任何匹配的类都不会被检测或包含在   报道报道。

我认为您使用的正则表达式不正确,因为它们不匹配,所以它们无效。使用.*而不是.,如下所示:

ScoverageKeys.excludedPackages in ScoverageCompile := ".*javascripts.*;.*\.js"

答案 1 :(得分:0)

此错误已在1.0.0版中修复。请注意,配置已更改,因此请务必检查自述文件(最值得注意的是,运行命令已从sbt scoverage:test更改为sbt coverage test并且插件成为自动插件,因此您无需再添加instrumentSettings )。

https://github.com/scoverage/sbt-scoverage