首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从sourceManaged引用Build.scala设置

如何从sourceManaged引用Build.scala设置
EN

Stack Overflow用户
提问于 2016-03-13 14:14:32
回答 1查看 356关注 0票数 0

我正在尝试用生成源文件的任务来扩展我的构建。我在项目/Build.scala中定义了我的任务,像这样(省略了与此无关的部分):

代码语言:javascript
复制
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中导入项目时,我得到以下错误:

从.web/ project加载项目定义的信息 对未定义设置的引用: {.}/compile:sourceManaged来自{.}/compile:generateConfiguration (.web/project/Build.scala:19)您的意思是编译:sourceManaged吗? {.}/compile:sourceGenerators来自{.}/compile:sourceGenerators (.web/project/Build.scala:33)您的意思是编译:sourceGenerators吗?

我理解我的问题是因为我可能引用了错误的范围设置。我想,这个问题在“此构建”({.})中,由于某种原因,这个问题出现在这里(据我所知,此设置存在于此轴的全局范围中)。

如何在Scala代码(而不是sourceManaged )中的编译配置中正确地表达对sourceManaged设置的依赖?

P.S.:sbt 0.13.8

scala 2.11.7

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-19 11:15:06

我自己似乎发现了这个问题。

这不起作用的原因可能是我将自定义设置放入构建中的方式--我试图覆盖构建的lazy val settings。由于我用Build.scala而不是build.sbt来描述我的任务,在最终的构建定义中,似乎还没有定义依赖的设置!在默认情况下,它们将在稍后设置为build.sbt导入。

一旦我将项目中的自定义属性添加到build.sbt中,同时将它们的定义留在Build.scala中,一切都按预期工作。

尽管有关于*.scala和build.sbt之间覆盖顺序的信息,以及一些复杂构建定义的简单示例,但它并不明显。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35971315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档