我正在使用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文件?
答案 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 )。