繁体   English   中英

参考子项目中sbt根项目中的设置

[英]Referring to a setting in an sbt root project from a sub project

如何从多项目sbt构建中的baseDirectory中引用根项目的baseDirectory? 喜欢

lazy val full: Project = Project(
  id = "full",
  base = file("."),
  ..
)

lazy val sub = Project(
  id = "sub",
  base = file("sub"),
  ..
  settings = Seq(
    javaSource in Compile := full.settings.baseDirectory / "foo" / "src"
  )
)

这个尝试只是给了我:

: error: ambiguous reference to overloaded definition,
both method settings in trait Project of type (ss: sbt.Def.Setting[_]*)sbt.Project
and  method settings in trait ProjectDefinition of type => Seq[sbt.Def.Setting[_]]
match expected type ?
    javaSource in Compile := full.settings.baseDirectory / "foo" / "src",
                                  ^

在sbt中,项目只是另一个设置 (以及配置和任务)。 因此,您可以使用in运算符来访问另一个项目中的设置值。 要获取的值baseDirectory在项目设置键full ,你会写

(baseDirectory in full).value

因此,您的完整javaSource设置应该是:

javaSource in Compile := (baseDirectory in full).value / "foo" / "src"

有关整个故事,请参阅sbt中有关Scopes的文档。

(注意,在访问settings一个的方法, Project很少做自己想要的东西,我相信只有当写自定义命令有关。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM