【发布时间】:2016-06-28 12:48:34
【问题描述】:
我正在尝试使用将生成源文件的任务扩展我的构建。 我正在像这样在 project/Build.scala 中定义我的任务(省略不相关的部分):
object ProjectBuild extends Build {
lazy val generateConfiguration = TaskKey[Seq[File]]("generateConfiguration")
lazy val unscopedSettings = Seq(
generateConfiguration <<=
(libraryDependencies, sourceManaged).map { (dependencies, generatedRoot) =>
// here goes implementation
},
sourceGenerators += generateConfiguration.taskValue
)
override lazy val settings = super.settings ++ inConfig(Compile)(unscopedSettings)
}
当我尝试在 sbt 中导入项目时,出现以下错误:
[info] 从 ...web/project 加载项目定义
对未定义设置的引用:
{.}/compile:sourceManaged 来自 {.}/compile:generateConfiguration (...web/project/Build.scala:19) 你是说 compile:sourceManaged 吗?
{.}/compile:sourceGenerators 来自 {.}/compile:sourceGenerators (...web/project/Build.scala:33) 你是说 compile:sourceGenerators 吗?
我知道我的问题是因为我可能引用了错误范围的设置。我想,问题出在“此构建”({.}) 之内,由于某种原因,此处已预先设置(据我了解,该设置存在于该轴的全局范围内)。
我应该如何在 Scala 代码(不是 .sbt)的编译配置中正确表达对 sourceManaged 设置的依赖?
附: sbt 0.13.8
斯卡拉 2.11.7
【问题讨论】: