我正在使用sbt-scoverage插件的一个项目中编写的播放框架。
我面临以下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......我的猜测是,它试图在scoverage-classes下从target中的某个位置传输service-main.js。我不打算对任何JavaScript文件运行scoverage,所以我包含了以下设置:
ScoverageKeys.excludedPackages in ScoverageCompile := ".views.;.javascripts.;.assets.;.js.;.resource_managed."它什么也改变不了-错误仍然存在。如何指示scoverage忽略JavaScript文件?
发布于 2014-07-24 06:39:55
这只是一个猜测,但值得继续检查它是否解决了这个问题。
根据Exclude classes and packages的说法
您可以通过提供正则表达式的分号分隔列表,将类排除在覆盖率度量之外。
正则表达式与完全限定的类名匹配,并且必须与整个字符串匹配才能生效。
任何匹配的类都不会被检测,也不会包括在覆盖率报告中。
我认为你使用的正则表达式是不正确的,因为它们不匹配,所以它们是无效的。使用.*而不是.,如下所示:
ScoverageKeys.excludedPackages in ScoverageCompile := ".*javascripts.*;.*\.js"发布于 2014-11-28 18:41:51
此错误已在版本1.0.0中修复。请注意,配置已更改,因此一定要检查自述文件(最值得注意的是,运行的命令从sbt scoverage:test更改为sbt coverage test,并且插件变成了自动插件,因此您不再需要添加instrumentSettings )。
https://stackoverflow.com/questions/24914295
复制相似问题