sbt 升级到 0.13.13 后通用错误中的 sbt 映射

Posted

技术标签:

【中文标题】sbt 升级到 0.13.13 后通用错误中的 sbt 映射【英文标题】:sbt mappings in Universal error after sbt upgrade to 0.13.13 【发布时间】:2017-05-20 14:38:00 【问题描述】:
mappings in Universal <++= (packageBin in Compile, sourceDirectory) map  (_, src) =>
  val confFiles = (src / "main" / "resources") ** "*.conf"
  confFiles.get.map(file => file -> ("conf/" + file.name))
,

有效,但生成编译器警告

错误:Append.Values[Seq[(java.io.File, String)], sbt.Def.Initialize[sbt.Task[Seq[(java.io.File, String)]]]] 没有隐式成立, 所以 sbt.Def.Initialize[sbt.Task[Seq[(java.io.File, String)]]] 不能附加到 Seq[(java.io.File, String)] Universal ++= 中的映射(Compile 中的 packageBin,sourceDirectory) map (_, src) =>

【问题讨论】:

【参考方案1】:

我是这样解决的

mappings in Universal ++=  (packageBin in Compile, sourceDirectory) map  (_, src) =>
val confFiles = (src / "main" / "resources") ** "*.conf"
confFiles.get.map(file => file -> ("conf/" + file.name))
 
.value,

更好的是

mappings in Universal ++= 
val src = sourceDirectory.value
val confFiles = (src / "main" / "resources") ** "*.conf"
confFiles.get.map(file => file -> ("conf/" + file.name))

【讨论】:

【参考方案2】:

这个运算符非常混乱。尝试一个更简单的:=,它在功能上是等效的:

mappings.in(Universal) := 
  // Dependency on packageBin (part of your previous definition).
  packageBin.in(Compile).value
  // Create the new mappings.
  val confFiles = (sourceDirectory.value / "main" / "resources") ** "*.conf"
  val newMappings = confFiles.get.map(file => file -> ("conf/" + file.name))
  // Append them manually to the previous value.
  mappings.in(Universal).value ++ newMappings

【讨论】:

那行不通。 newMappings 创建一个引发错误的任务。以下是我的解决方法

以上是关于sbt 升级到 0.13.13 后通用错误中的 sbt 映射的主要内容,如果未能解决你的问题,请参考以下文章

Windows上的sbt 0.13 - 无法访问存储库

Linux环境下手动配置sbt

升级到 RC5 后,Angular2 通用错误找不到模块“@angular/compiler/src/template_parser”

将项目升级到 Play Framework 的 2.2.0 版本

Scala sbt:sbt 中的多个依赖项

升级 Play/Scala/SBT/jOOQ/HSQLDB 应用程序时出错