scala - SBT: "value map is not a member of (sbt.TaskKey[sbt.Tests.Output], sbt.TaskKey[sbt.Tests.Output]) " when updating from 0.13.8 to 1.x.x
问题描述
I've below sbt-mult-jvm plugin which are working fine on sbt version 0.13.18.
import com.typesafe.sbt.SbtMultiJvm
import com.typesafe.sbt.SbtMultiJvm.MultiJvmKeys.MultiJvm
lazy val rootProject = (project in file("."))
.settings(executeTests in IntegrationTest <<= (executeTests in Test, executeTests in MultiJvm) map {
case (testResults, multiNodeResults) =>
val overall =
if (testResults.overall.id < multiNodeResults.overall.id)
multiNodeResults.overall
else
testResults.overall
Tests.Output(overall,
testResults.events ++ multiNodeResults.events,
testResults.summaries ++ multiNodeResults.summaries)
}).
configs(IntegrationTest, MultiJvm)
But when I updated the sbt version to 1.x.x using this migration guide
import com.typesafe.sbt.SbtMultiJvm
import com.typesafe.sbt.SbtMultiJvm.MultiJvmKeys.MultiJvm
lazy val rootProject = (project in file("."))
.settings(executeTests in IntegrationTest := (( executeTests in Test, executeTests in MultiJvm).value) map {
case (testResults, multiNodeResults) =>
val overall =
if (testResults.overall.id < multiNodeResults.overall.id)
multiNodeResults.overall
else
testResults.overall
Tests.Output(overall,
testResults.events ++ multiNodeResults.events,
testResults.summaries ++ multiNodeResults.summaries)
}).
configs(IntegrationTest, MultiJvm)
I'm getting below error.
[info] Done updating.
[warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings.
/Users/rajkumar.natarajan/Documents/Coding/misc/akka-zk-cluster-seed/build.sbt:87: error: `<<=` operator is removed. Use `key := { x.value }` or `key ~= (old => { newValue })`.
See http://www.scala-sbt.org/1.x/docs/Migrating-from-sbt-013x.html
settings(compile in MultiJvm <<= (compile in MultiJvm) triggeredBy (compile in IntegrationTest)).
^
/Users/rajkumar.natarajan/Documents/Coding/misc/akka-zk-cluster-seed/build.sbt:88: error: value map is not a member of (sbt.TaskKey[sbt.Tests.Output], sbt.TaskKey[sbt.Tests.Output])
settings(executeTests in IntegrationTest <<= (executeTests in Test, executeTests in MultiJvm) map {
^
/Users/rajkumar.natarajan/Documents/Coding/misc/akka-zk-cluster-seed/build.sbt:91: error: value overall is not a member of Any
if (testResults.overall.id < multiNodeResults.overall.id)
^
/Users/rajkumar.natarajan/Documents/Coding/misc/akka-zk-cluster-seed/build.sbt:91: error: value overall is not a member of Any
if (testResults.overall.id < multiNodeResults.overall.id)
^
/Users/rajkumar.natarajan/Documents/Coding/misc/akka-zk-cluster-seed/build.sbt:92: error: value overall is not a member of Any
multiNodeResults.overall
^
/Users/rajkumar.natarajan/Documents/Coding/misc/akka-zk-cluster-seed/build.sbt:94: error: value overall is not a member of Any
testResults.overall
^
/Users/rajkumar.natarajan/Documents/Coding/misc/akka-zk-cluster-seed/build.sbt:96: error: value events is not a member of Any
testResults.events ++ multiNodeResults.events,
^
/Users/rajkumar.natarajan/Documents/Coding/misc/akka-zk-cluster-seed/build.sbt:96: error: value events is not a member of Any
testResults.events ++ multiNodeResults.events,
^
/Users/rajkumar.natarajan/Documents/Coding/misc/akka-zk-cluster-seed/build.sbt:97: error: value summaries is not a member of Any
testResults.summaries ++ multiNodeResults.summaries)
^
/Users/rajkumar.natarajan/Documents/Coding/misc/akka-zk-cluster-seed/build.sbt:97: error: value summaries is not a member of Any
testResults.summaries ++ multiNodeResults.summaries)
^
[error] sbt.compiler.EvalException: Type error in expression
[error] sbt.compiler.EvalException: Type error in expression
How can I resolve this error?
解决方案
The answer is in the link you provide; specifically "the tuple enrichments (apply and map) for TaskKey’s" has been removed.
The replacement is to use .value
, which removes the need for the map.
Your project should look something like this (untested):
import com.typesafe.sbt.SbtMultiJvm
import com.typesafe.sbt.SbtMultiJvm.MultiJvmKeys.MultiJvm
lazy val rootProject = (project in file("."))
.settings(executeTests in IntegrationTest := {
val testResults = (executeTests in Test).value
val multiNodeResults = (executeTests in MultiJvm).value
val overall = if (testResults.overall.id < multiNodeResults.overall.id)
multiNodeResults.overall
else
testResults.overall
Tests.Output(overall,
testResults.events ++ multiNodeResults.events,
testResults.summaries ++ multiNodeResults.summaries)
})
.configs(IntegrationTest, MultiJvm)
推荐阅读
- python - 更改 django 管理员的 change_list.html
- python - Pandas 中具有进展的条件值
- http - HTTP POST 重定向到 HTTPS 会导致数据丢失?
- android - MyFirebaseMessagingService.onMessageReceived() 不起作用
- r - 处理增长曲线中的缺失值
- ios - 将 Expo React Native 发布到 Apple Store(应用程序加载器未显示)
- excel - “幽灵”文件保护
- python - 错误:但是这台机器只有:['/cpu:0']。- 但识别 2 gpus
- ios - iOS:如何正确设置/重置 UIScreen.main.brightness
- php - 如何在 CakePHP 中获得退回的电子邮件?