Why does sbt-scoverage report java.lang.RuntimeException: Duplicate mappings for JavaScript files?
Я использую плагин 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
, Я не собираюсь запускать scoverage для любого файла JavaScript, поэтому я включил следующий параметр:
ScoverageKeys.excludedPackages in ScoverageCompile := ".views.;.javascripts.;.assets.;.js.;.resource_managed."
Это ничего не меняет - ошибка сохраняется. Как я могу дать команду scoverage игнорировать файлы JavaScript?
2 ответа
Это всего лишь предположение, но стоит проверить, решает ли это проблему.
Согласно исключить классы и пакеты:
Вы можете исключить классы из рассмотрения для измерения покрытия, предоставив список регулярных выражений через точку с запятой.
Регулярные выражения сопоставляются с полным именем класса и должны соответствовать всей строке для вступления в силу.
Любые подходящие классы не будут инструментированы или включены в отчет о покрытии.
Я думаю, что используемые вами регулярные выражения неверны, и, поскольку они не совпадают, они не имеют никакого эффекта. использование .*
не .
следующее:
ScoverageKeys.excludedPackages in ScoverageCompile := ".*javascripts.*;.*\.js"
Эта ошибка была исправлена в выпуске 1.0.0. Обратите внимание, что конфигурация изменилась, поэтому обязательно проверьте файл readme (особенно, команда для запуска изменилась с sbt scoverage:test
в sbt coverage test
и плагин стал автоматическим плагином, так что вам больше не нужно добавлять настройки инструментов).